当前位置: 首页 > 知识库问答 >
问题:

如何在Spring MVC中的不同类中创建动态bean

江瀚昂
2023-03-14

我需要在运行时使用动态bean工厂为不同条件创建不同类的动态bean。它是用于一般DAO实现的。如何使用Java配置实现它??

MVC初始化类

使用原型bean配置

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

public class SpringMvcInitializer implements WebApplicationInitializer {
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext();
        appContext.register(AppConfig.class);
     /*   serviceA.setEntityClass((Class<?>) Education.class);
        IGenericDao ff=appContext.getBean(IGenericDao.class,"IGenericDao");*/

        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDispatcher", new DispatcherServlet(appContext));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");

        appContext.setServletContext(servletContext);
        appContext.refresh();
        //appContext.getBean("IGenericDao");
       // Services serviceA = new Services(Education.class);
        Services<?> serviceA = (Services<?>)appContext.getBean("IGenericDao");
        serviceA.setEntityClass((Class<?>) Education.class);
        // serviceA = (Services)appContext.getBean("IGenericDao");
        //serviceA.setEntityClass((Class<?>) Education.class);
       // serviceA.setEntityClass(Employee.class);
        serviceA.setName("hellooo");
        serviceA.getName();

        //appContext.
        //serviceA=new Services(T clazz);
    }
}

共有1个答案

魏鸿禧
2023-03-14

试试这个代码

    BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) appContext.getBeanFactory();
    beanFactory.registerBeanDefinition("IGenericDao",
            BeanDefinitionBuilder.genericBeanDefinition(Employee.class)           
                    .getBeanDefinition()
    );  
 类似资料:
  • 问题内容: 我有类名称的列表,想动态创建它们的实例。例如: 如何在Python中动态创建该实例?谢谢! 问题答案: 这通常被称为反思或自省。找出类似的问题,这些问题可以回答您要尝试做的事情: Python是否具有与Java类forname等效的名称 您可以使用字符串实例化Python中的类吗

  • 如何在一个类中创建和实例化jpa存储库?我现在的情况是,我必须在一个泛型类中为不同的实体创建存储库。 我可以很容易地为Neo4j存储库这样做, 对于JpaRepostory,我检查了留档,发现了这个, 我不确定如何在上面的代码中实例化工厂。 另外,我不能像为Neo4j那样通过指定域类来创建存储库吗?

  • 问题内容: 我们需要创建SQLAlchemy类来访问多个外部数据源,这些数据源会随着时间的推移而增加。我们为核心ORM模型使用了声明式基础,并且我知道我们可以使用autoload = True手动指定新的ORM类,以自动生成映射。 问题是我们需要能够采用以下方式动态生成它们: 并动态地将其转换为如下所示: 我们不希望类的持久时间长于打开连接,执行查询然后关闭连接所需的时间。因此,理想情况下,我们可

  • 例如,类的ViewBag属性,我们可以动态地获取/设置值,并向该对象添加任意数量的附加字段或属性,这很酷。我想在其他类型的应用程序中使用类似的东西,除了MVC应用程序和类之外。当我试图创建动态对象并设置它的属性时,如下所示: 我有,带有message属性或索引器'<>f__anonymoustype0.a'不能赋值--它在第2行中是只读的。我也认为这不是我想要的。也许有什么课可以让我做一些类似的事

  • 问题内容: 我需要在JavaScript中动态创建CSS样式表类,并将其分配给一些HTML元素(例如div,table,span,tr等)以及一些控件(例如asp:Textbox,Dropdownlist和datalist)。 可能吗? 一个样本很好。 问题答案: 尽管我不确定为什么要使用JavaScript创建CSS类,但这是一个选择:

  • 问题内容: 如果我定义一个小python程序为 我收到回溯错误 我要弄清楚的是,如何在不实例化对象的情况下动态地将类方法设置为类? 编辑: 这个问题的答案是 返回以下输出 问题答案: 您可以通过简单地分配给类对象或通过对类对象的setattr动态地将类方法添加到类中。在这里,我使用python约定,即类以大写字母开头,以减少混乱: