2017-09-04 23 views
-1

最近私はスプリングフレームワークを掘り下げて、ちょっとした質問を思いつきました。 私たちは、このようなクラスがある場合としますBean IDの名前と参照名は常に同じでなければなりませんか?

class A 
{ 
    @Autowired 
    private B hello; 
    .... 
    .... 
} 

をしてxmlファイルで、私は次のように定義されています:

<bean id="abc" class="org.eclipse.packageName.B"/> 

は、Beanのidの名前は、作成すべきであり、参照名はで言及クラスAは同じかどうか?

もう1つの質問は、コンパイラは、私たちがフィールドに答えた場合、このクラスのBeanがxmlに記述されていることをどのように知っていますか?

+0

確認のための素早い単体テストを書くことができますか? – toongeorges

+0

2番目の質問については、コンパイラはBeanを認識しません。実行時にBeanはアプリケーションコンテキストにロードされます。 – toongeorges

答えて

2

いいえ、Bean IDは、参照元クラスのフィールド名と同じである必要はありません。注入は、型に基づいており、春のIDには依存しません(@Qualifier注釈を使用しない限り)。

注射は、実行時にSpring IoC containerによって提供される。

+0

springの2つのBean作成で名前属性を同じにすることはできますか? – mshikher

+0

@mshikher 'name'属性は 'id'のエイリアスとして動作するため、アプリケーションコンテキスト内でグローバルに一意である必要があります。 – davioooh

2

idパラメータは、修飾Beanに使用されます。したがって、クラス名と同じである必要はありません。あなたは行って、あなたのBeanを参照することができます:あなたは、あなたがそれを@Qualifier注釈付きIDが参照することによりautowireするかを指定することができ、同じタイプの2つの豆を提供する場合

@Autowired 
@Qualifier("abc") 
private B Hello 

これは便利です。 特定のタイプのBeanが1つのみの場合、@修飾子は冗長であり、Springはidを知ることなく参照されるたびにこの単一のBeanを自動的に自動配線します。

関連する問題