<!-- not a real spring definition, just an example -->
<bean id="example1" class="com.example.SomeBean">
<property name="dependency" value="dependencyV1"/>
</bean>
<bean id="example2" class="com.example.SomeBean">
<property name="dependency" value="alternateDependencyV2"/>
</bean>
1条答案
按热度按时间mum43rcc1#
Spring、CDI(可能还有Guice等)通常不允许将bean“注入”到
static
字段中。为什么会这样?虽然Spring当然 * 可以 * 支持将内容注入到静态字段中,但如果管理bean的两个副本,则会出现冲突,因为静态字段在类的所有示例中分片。在您的示例中,您只有一个托管示例,它可以在非常狭窄的范围内“工作”,但项目通常不会那么简单,这就是Spring不支持它的原因:
围绕类加载、构造函数和DI/IOC的整个哲学还有其他原因,但这是主要原因。
有一些方法可以击败这种保护(不推荐):https://www.baeldung.com/spring-inject-static-field