2016-06-29 15 views
0

と組み合わせて使用​​すると、@Configuration注釈はxml構成を置き換えるために使用されます。しかし、@Component(クラスレベルで定義されている)と組み合わせて@Beanが使用されたコードを見ました。これは有効な宣言ですか? @Component@Beanの注釈対を使用している場合の長所/短所は、@Configuration@Beanを使用していますか?春@Component&@Beanアノテーション

EDIT:

おかげ@Sundar & @Biju。私はComponentクラスの下で2つのBeanメソッド間のプログラム呼び出しを行った。私はさまざまなオブジェクト値を見た。しかし、私がConfigurationを使うと、同じBean値が見えました。私は@Configurationを使用したとき、私は@Beanアノテーションを付けるメソッドは春の豆

コード

@Component 
public class AppConfig { 

    @Bean(name="customerService") 
    public CustomerService getCustomerService(){ 
     System.out.println(getService()); 
     System.out.println(getService()); 
     return getService(); 
    } 

    @Bean 
    public CustomerService getService(){ 
     return new CustomerServiceImpl(); 
    } 
} 
として扱われていたと仮定し、一方、あなたが説明したものに基づいて、私は、私が @Componentを使用する場合、通常のメソッド呼び出しが行われたと仮定します

コンソール出力

[email protected] 
[email protected]8a058 

コード

@Configuration 
public class AppConfig { 

    @Bean(name="customerService") 
    public CustomerService getCustomerService(){ 
     System.out.println(getService()); 
     System.out.println(getService()); 
     return getService(); 
    } 

    @Bean 
    public CustomerService getService(){ 
     return new CustomerServiceImpl(); 
    } 
} 

コンソール出力

[email protected] 
[email protected] 

答えて

4

しかしキャッチがあり、有効な宣言である - @Component内の一つがライトモードとの依存関係と呼ばれる簡単のために注入することができませんこの形で宣言された豆。勧告は@Configuration注釈付きクラスで@Beanを使用することが常にある - あなたは@Configurationための代替として使用することができます@Componenthttp://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-java-basic-concepts

+0

ありがとう@Biju!私は私の質問を更新しました。明確化のためにありがとう。 –

+0

動作は@Componentの有無にかかわらず同じようです。 Component vs annotationのアノテートされたクラスでBeanを使用すると、違いはありますか? –

2

- ここでは、この上の良い参照です。公式suggestion from spring teamです。

@Configurationでアノテーションされていないクラス(ただし通常は代わりに別のスプリングステレオタイプ、たとえば@Component)で@Beanメソッドを宣言します。 @Beanメソッドの間でプログラムによる呼び出しを行わない限り、これは問題なく動作しますが、条件が適用されます*。

このリンクの詳細を参照してください。

http://dimafeng.com/2015/08/29/spring-configuration_vs_component/

+0

ありがとう@Sundararaj!私は質問を更新しました。明確にしていただきありがとうございます。 –

関連する問題