0

我有以下bean配置

<bean id="firstBean" class="...">
   <property name="someProperty" fef="someOtherBean"/>
</bean>

<bean id="secondBean" class="...">
   <constructor-arg ref="firstBean"/>
</bean>

问题是第二个 bean 尝试从构造函数中的 firstBean 获取 someProperty,但它尚未注入。这两个类都来自我无法更改的库。有没有一种方法可以在将 firstBean 注入到 secondBean 之前强制设置属性?

谢谢

编辑

这个问题没有直接的解决方案,所以我用内部管理两个 bean 并提供 secondBean 实例的工厂解决了这个问题

4

2 回答 2

2

使第二个 bean 依赖于第一个。

<bean id="secondBean" class=".." depends-on="firstBean">

这样 spring 将确保firstBean在实例化之前准备好secondBean

另一种选择是FactoryBean使用@Bean. 这样您就可以更好地控制实例化过程。

于 2013-01-31T14:58:58.200 回答
1

你需要看看InitializingBean。看看文档

由 BeanFactory 设置所有属性后需要做出反应的 bean 实现的接口:例如,执行自定义初始化,或仅检查所有强制属性是否已设置。

实现 InitializingBean 的另一种方法是指定自定义 init 方法,例如在 XML bean 定义中。有关所有 bean 生命周期方法的列表,请参阅 BeanFactory javadocs。

于 2013-01-31T14:59:34.447 回答