2

xml を使用して、共通の xml ファイルを定義することができました。ここに、他の異なる condig ファイルに使用される共通の Bean を配置できます。構成を psring Java 構成に移動しました。Java 構成でこれを実現するにはどうすればよいですか?

共通クラスを次のように持っているとしましょう:

@Configuration
public class Common {
    @Bean
    public A a(){
        return new A();
    }
}

そして私はそれを次のように使いたい

@Configuration
public class AConfig {

    @Bean
    public ABB abb(){
        ABB abb = new ABB();
        //TODO abb.set  ????
        return abb;
    }
}

TODO 部分がありません。共通クラスの a() を使用したいです。それは可能ですか?

4

2 に答える 2

4

最も簡単な方法は、次のようにプライベート メンバーで「Autowire」を実行することです。

@Configuration
public class AConfig {

    @Autowire
    private A myA;

    @Bean
    public ABB abb(){
        ABB abb = new ABB();
        abb.setA(myA);  // or MUCH better, make the A member of ABB private final and overload a construtor
        return abb;
    }
}

これが機能する理由は、AConfig も Bean だからです。Spring Bean Factory によって構築される必要があります。建設後、建設後の活動が行われます - Autowired などの建設後の注釈を処理する活動の 1 つです。したがって、「myA」は @Bean アノテーション付きメソッドで使用される前に設定されます。

于 2014-03-06T19:19:54.070 に答える