我的应用程序包含2个模块,我在module-B
下有一些类,我想要的是在jar
中动态加载module-B
module-A
并将这些类注册为context
module-A
中的bean。
我context
下没有任何module-B
,因此我的父module-B
中module-A
的加载上下文不适合我。
到目前为止我尝试过:
JCL,但我无法弄清楚应该如何注册这些bean。
我错过了什么?是否有更好的方法可以在子模块中创建上下文并将其加载到父模块中。
答案 0 :(得分:0)
使用ClassPathXmlApplicationContext上下文配置你的module-A东西,然后你可以加载你的module-B jar,并使用以下代码添加你的bean
DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)context.getAutowireCapableBeanFactory(); public void addComponent(Object component) { if (component instanceof Class) { Class clazz = (Class) component; GenericBeanDefinition beanDef = new GenericBeanDefinition(); beanDef.setBeanClass(clazz); beanDef.setAutowireCandidate(true); beanDef.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR); String beanName = clazz.getName(); beanFactory.registerBeanDefinition(beanName, beanDef); } else { beanFactory.registerSingleton(component.getClass().getName(), component); } }