0

Spring 3.2 のデフォルトの autowire メソッドは何ですか? だから私はこのクラスを持っているとしましょう

public class Saxophonist implements IPerform{

    @Override
    public String perform() {
        return "I am A Saxophonist and I am Playing The : "+ saxophone;
    }

    private Instrument saxophone;

    public Instrument getSaxophone() {
        return saxophone;
    }

    @Autowired
    public void setSaxophone(Instrument saxophone) {
        this.saxophone = saxophone;
    }
}

byName で実行するか、それとも byType で実行しますか?

4

5 に答える 5

2

デフォルトでは、自動配線はタイプごとに実行されます。を使用@Qualifierして、オートワイヤーの名前を指定できます。

コンテナーに同じタイプの Bean が複数存在する場合、Spring はその名前にフォールバックします。したがって、フィールド名が Bean 名と一致する場合、それぞれの Bean が使用されます。

代替一致の場合、Bean 名はデフォルトの修飾子値と見なされます。したがって、ネストされた修飾子要素の代わりに ID "main" を使用して Bean を定義すると、同じ一致結果が得られます。ただし、この規則を使用して特定の Bean を名前で参照することはできますが、@Autowired は基本的に、オプションのセマンティック修飾子を使用したタイプドリブン インジェクションに関するものです。これは、Bean 名のフォールバックを使用しても、修飾子の値は常に型の一致のセット内で狭義のセマンティクスを持つことを意味します。一意の Bean ID への参照を意味的に表現しません。適切な修飾子の値は、「main」または「EMEA」または「persistent」であり、Bean ID から独立した特定のコンポーネントの特性を表します。

于 2013-02-14T10:01:08.433 に答える
2

@Autowired はタイプドリブンですが、Bean を名前で注入するためのフォールバック キャッチを提供します。名前に基づいて Bean ルックアップとインジェクションを実行する場合は @Resource を使用します。代わりに、@Autowired と @Qualifier を併用することもできますが、Bean をグループ化する場合により便利です。 http://www.spiritwalker-jiang.com/archive/2013/02/11/Understanding-Autowired-annation-in-Spring

于 2013-02-14T10:05:01.413 に答える
1

タイプ別にルックアップを実行します。同じ ApplicationContext 内に同じタイプの複数の Bean がある場合は、@Qualifierそれらのすべての Bean をそれぞれの名前で自動配線するために使用する必要があります。

于 2013-02-14T10:02:45.587 に答える
0

タイプ別。名前配線で実行するには、注釈を追加する必要があります@Qualifier

于 2013-02-14T10:01:09.387 に答える
0

bean name@Qualifier()setter メソッドに追加された場合、デフォルトの修飾子値と見なされます。もっと_

于 2013-02-14T10:05:28.717 に答える