java - 如何以编程方式将 bean 添加到 Spring 上下文?

标签 java spring

我想从一些配置创建自定义子上下文,并以编程方式向它添加一些 bean。

我阅读了答案 https://stackoverflow.com/a/4540762/258483关于 BeanDefinitionRegistryPostProcessor 但不明白如何使用它。如果我编写了 BeanDefinitionRegistryPostProcessor 的实现,那么下一步该怎么做?添加到上下文?但这就是问题所在:如何将 bean 添加到上下文中!如果我能够将 BeanDefinitionRegistryPostProcessor 添加到上下文中,那我为什么要问如何添加 beans?

问题是我有上下文并想向其中添加 bean。

我知道我可以实例化 bean 并 Autowiring 它们

Context#getAutowireCapableBeanFactory().createBean(klass);

但这显然只是连接类,而不是将其添加到上下文中?

最佳答案

Spring 5.0 开始,您可以直接使用 GenericApplicationContext 动态注册 bean。

GenericApplicationContext ac = ....;
// example
ac.registerBean("myspecialBean", Integer.class, () -> new Integer(100));
// using BeanDefinitionCustomizer
ac.registerBean("myLazySpecialBean", Integer.class, () -> new Integer(100), (bd) -> bd.setLazyInit(true));

参见 javadoc此处为 registerBean

的不同 API

关于java - 如何以编程方式将 bean 添加到 Spring 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43021493/

相关文章:

Java - 优先级队列显示 NullPointerException

java - 如何替换字符串模板(Gradle)

java - Kafka序列化-反序列化问题

java - 无法在Tomcat服务器中运行Maven Spring MVC项目

Spring Boot JSF集成

java - 如何在底部使用 EditText 在 Android 中创建扩展工具栏

java - Android - runOnUIThread 什么时候发生?

java - spring-data-mongo @Query 在请求日期时不起作用

java - 如何设置每天上午 9 点到 11 点和下午 5 点到 6 点的 cron 作业时间

java - Spring Security 4.2 不工作