他の depeandant Bean が作成されるまで @Autowire 一部の Bean を回避することは可能ですか? 例を挙げて説明しましょう。
aというプロパティを持つタイプAのオブジェクトを作成する FactoryBean があります。プロパティが null の場合、Bean Aにデフォルト値が割り当てられます。
@Configuration クラスには次のものがあります。
@Autowired プライベート myBean;
何が起こっているのかというと、ファクトリが Bean を作成することです (方法は完全にはわかりません) が、ファクトリのフィールドaは null であり、 A の作成に使用される別の Bean が必要です。Factory は外部依存関係の内部にあるため、注釈を追加できません。
問題は、@Autowired がファクトリにオブジェクトを要求する前に、aの値を設定する必要があるということです。私が持っている制限を考えると、それは可能ですか?
編集 コードは次のとおりです。
@Configuration
@ImportResource("classpath:factory-context.xml")
public class ServiceContextConfig {
@Autowired
private A createdObject;
@Bean(name = "entities-list")
public List<String> getEntity() {
List<String> ls = new ArrayList<String>();
ls.add("countriescatalog");
return ls;
}
次に、factory-context.xml は次のようになります。
<bean id="client-factory" class="ClientFactory">
<property name="entities" ref="entities-list"/>
</bean>
実際の構成はもう少し大きいです。このような単純化された例は試していません。このような単純化されたコンテキストで再現して、@emd が提案したようにファクトリをラップして修正できるかどうかを確認します。