2016-08-25 8 views
0

Мне нужно создать динамические компоненты во время выполнения с разными классами для разных условий с использованием фабрики динамических компонентов. Это для общей реализации DAO. Как реализовать его с помощью конфигурации Java?Как создать динамический компонент в разных классах в Spring MVC

MVC Initializer Класс

Использование конфигурации прототипа боба

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); 
    } 
} 
+0

Вы должны включать более подробную информацию и показать свои неудачные усилия, чтобы сделать его легче понять, что вы «пытаюсь добиться. – kryger

+0

Вопрос отредактирован. –

ответ

1

Попробуйте этот код,

BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) appContext.getBeanFactory(); 
    beanFactory.registerBeanDefinition("IGenericDao", 
      BeanDefinitionBuilder.genericBeanDefinition(Employee.class)   
        .getBeanDefinition() 
    ); 
+0

Спасибо ... Его работа. –

+0

Можете ли вы рассказать о том, как это работает? –

Смежные вопросы