如何使用反射自动注册spring bean

时间:2015-07-10 08:23:31

标签: java spring reflection spring-bean

我的应用程序包含2个模块,我在module-B下有一些类,我想要的是在jar中动态加载module-B module-A并将这些类注册为context module-A中的bean。

context下没有任何module-B,因此我的父module-Bmodule-A的加载上下文不适合我。

到目前为止我尝试过:

JCL,但我无法弄清楚应该如何注册这些bean。

我错过了什么?是否有更好的方法可以在子模块中创建上下文并将其加载到父模块中。

1 个答案:

答案 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);
                }
            }

相关问题