0

次のBean構成があります

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

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

問題は、2 番目の Bean がコンストラクターで firstBean から someProperty を取得しようとするが、まだ注入されていないことです。両方のクラスは、変更できないライブラリからのものです。firstBean が secondBean に注入される前に、プロパティの設定を強制する方法はありますか?

ありがとう

編集

この問題には直接的な解決策がなかったので、両方の Bean を内部で管理し、secondBean のインスタンスを提供するファクトリで解決しました

4

2 に答える 2

2

1 番目の Bean に依存する 2 番目の Bean を作成します。

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

このようにして、春はfirstBeanインスタンス化する前に準備ができていることを確認しますsecondBean

もう 1 つのオプションは、FactoryBeanまたは を使用したプログラム Bean 定義を使用すること@Beanです。そうすれば、インスタンス化プロセスをより適切に制御できます。

于 2013-01-31T14:58:58.200 に答える
1

を参照する必要がありますInitializingBeanドキュメントをご覧ください。

すべてのプロパティが BeanFactory によって設定された後に反応する必要がある Bean によって実装されるインターフェース: たとえば、カスタム初期化を実行するため、または単にすべての必須プロパティが設定されていることを確認するため。

InitializingBean を実装する代わりに、XML Bean 定義などでカスタムの init-method を指定することもできます。すべての Bean ライフサイクル メソッドのリストについては、BeanFactory javadocs を参照してください。

于 2013-01-31T14:59:34.447 に答える