如何在 Spring MVC 中的不同类中创建动态 bean
Posted
技术标签:
【中文标题】如何在 Spring MVC 中的不同类中创建动态 bean【英文标题】:How to create dynamic bean within different classes in Spring MVC 【发布时间】:2017-01-01 18:49:29 【问题描述】:我需要在运行时使用动态 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】:试试这个代码,
BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) appContext.getBeanFactory();
beanFactory.registerBeanDefinition("IGenericDao",
BeanDefinitionBuilder.genericBeanDefinition(Employee.class)
.getBeanDefinition()
);
【讨论】:
以上是关于如何在 Spring MVC 中的不同类中创建动态 bean的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Eclipse 中创建 Spring MVC 项目?
我如何在 Spring Boot/MVC 中创建错误处理程序(404、500...)
如何在 Intellij IDEA 13.1 中创建具有 Maven 结构的 Spring MVC 应用程序?