アプリケーション コンテキストの典型的な部分:
<bean id="option_A" class="class_a" lazy-init="true"/>
<bean id="option_B" class="class_b" lazy-init="true" depends-on="setup_bean"/>
<alias name="option_${OPTION_PROPERTY}" alias="thingChosen"/>
<bean id="setup_bean" class="class_setup" lazy-init="true"/>
ここでの概念は、OPTION_PROPERTY が「A」に設定されている場合、
<bean id="foo" class="whatever"><property name="bar" ref="thingChosen"/></bean>
bar プロパティに挿入された class_a のインスタンスを取得し、プロパティが "B" に設定されている場合、クラス b のインスタンスが挿入されますが、クラス b には setup_bean (クラス a にはない) への隠れた依存関係があります。そのため、最初に setup_bean を作成する必要があります。
OPTION_PROPERTY が「A」に設定されている場合、setup_bean は引き続き作成されます。Spring 3.2.4.RELEASE を使用してこれを試しましたが、一貫しています。これは私のバグか誤解のようです。
Bean が lazy-init の場合、依存 Bean は、その Bean が遅延して作成されるまで待ってから作成するべきではありませんか?