我想从一些配置创建自定义子上下文,并以编程方式向它添加一些 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
关于java - 如何以编程方式将 bean 添加到 Spring 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43021493/