我有以下 bean 配置
<bean id="firstBean" class="...">
<property name="someProperty" fef="someOtherBean"/>
</bean>
<bean id="secondBean" class="...">
<constructor-arg ref="firstBean"/>
</bean>
问题是第二个 Bean 试图从构造函数中的 firstBean 获取一些属性,但它还没有注入。这两个类都来自我无法更改的库。有没有办法在将第一个Bean注入到第二个Bean之前强制设置属性?
谢谢
编辑
这个问题没有直接的解决方案,所以我用内部管理两个豆子并提供第二个豆子的实例的工厂解决了它
使第二个 bean 依赖于第一个。
<bean id="secondBean" class=".." depends-on="firstBean">
这样,spring将确保firstBean
在实例化secondBean
之前准备就绪。
另一种选择是使用 FactoryBean
或使用 @Bean
的编程 Bean 定义。这样,您就可以更好地控制实例化过程。
你需要看看InitializingBean
.看看文档。
由 BeanFactory 设置完所有属性后需要做出反应的 bean 实现的接口:例如,执行自定义初始化,或者只是检查是否已设置所有必需属性。
实现 InitializingBean 的另一种方法是指定自定义的 init 方法,例如在 XML Bean 定义中。有关所有 Bean 生命周期方法的列表,请参阅 BeanFactory javadocs。