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

标签 java spring reflection spring-bean

我的应用程序由2个模块组成,我在module-B下有一些类,我想要的是动态加载module-Amodule-Bjar并将这些类注册为module-Acontext中的bean。

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

到目前为止我已经尝试过:

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

我错过了什么?有没有更好的方法来做到这一点,而无需在子模块中创建上下文并将它们加载到父模块中。

最佳答案

使用 ClassPathXmlApplicationContext 上下文来配置模块 A 的内容,然后您可以加载模块 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);
                }
            }

关于java - 如何使用反射自动注册spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31335882/

相关文章:

java - Long 或 String 挪威出生号码

java - 无法比较附加到类名的 Java 字符串中的对象

java - 使用 Spring JPA 存储库进行不同计数

Spring 的 DI 不是 transient 的,也不是可序列化的,而是记录 NSE

c# - Linq2SQL - 使用反射选择项目

java - 编程语言捕获和处理的异常算作软件中断吗?

java - 从 RestTemplate 获取 RAW-Response

android - 向后兼容性和 Android Open Accessory 库

c# - PostSharp 如何在运行时知道某个方面是否应用于方法?

java - 将控制台输出重定向到 GUI