【发布时间】:2021-10-29 14:59:22
【问题描述】:
我看不懂下面的文档语句
(...) 在运行时注册新的 bean(与 live 同步) 访问工厂)不受官方支持,可能会导致 并发访问异常,bean 中的不一致状态 容器,或两者兼而有之。
我知道它不能在运行时注入,但之前我们可以阅读文档:
除了包含有关如何 创建一个特定的 bean,ApplicationContext 实现也 允许注册在外部创建的现有对象 容器(由用户)。这是通过访问 ApplicationContext的BeanFactory通过getBeanFactory()方法, 它返回 BeanFactory DefaultListableBeanFactory 执行。 DefaultListableBeanFactory 支持这种注册 通过 registerSingleton(..) 和 registerBeanDefinition(..) 方法。
那么如何实现这种形式的注入,而不是在运行时。现在我很困惑。
【问题讨论】:
-
你能分享你找到这些信息的链接吗?谢谢!
-
我相信这与不遵循常规方式的bean的动态注册有关,例如
GenericWebApplicationContext.registerBean()。你到底想做什么? -
想知道什么时候注入bean,会产生文档中描述的异常。因为我搜索动态注入的时候,谷歌都是关于如何注入的,并没有提到文档中提到的异常。所以,我只想知道什么情况下会有例外。可能是我想多了。
-
确实是。您通常不会动态注册 bean,即使这样做,您也使用
GenericWebApplicationContext.registerBean()而不是提到的方法(在我看来,除了简单地注册 bean 之外,它还用于其他任何事情)。
标签: java spring dependency-injection spring-bean