春Frameworkの学習(VIII):予選@高度なアセンブリのために

開発中に、あなたは確かに、私は自動組立を意味し、よりインテリジェントな手続きを所有したいと思います。以前の私たちは、自動的に、Beanのコンテキスト内で要件を満たすために得ることができる特別な@Autowiredノートについて話しました、そしてあなたが注入するプロパティに注入しました。このように:

このコンテンツの例としては、行うべきである:プログラムが自動的にオブジェクトのクラスの学生生徒の参照に注入し、実行されています。複数のBeanオブジェクトが存在する場合の質問は、学生、私は今のコンテキストです、何が起こりますか?私たちが想像することができるので、条件を満たし、複数のオブジェクトがあるので答えは、アセンブリが失敗したということなので、春には、選択した例外が発生するかを知りませんでした。

この問題を解決するために、我々は名前の意味知られているを参照して、春の@Qualifierノートを使用することができ、@修飾子アノテーションは「限られた」という意味です。コードを見てください。

@Configuration 
@ComponentScan(basePackageClasses。=のMyConfig クラスパブリック クラスのMyConfig { 

    @Bean 
    @Qualifier( "WORK1" 
    宿題homework1(){ 
        戻り 、新たな( "1 + 5 =?"宿題)。
    } 

    @Bean 
    @Qualifier( "WORK2" 
    宿題homework2(){ 
        戻り 、新たな( "2 + 6 =?"宿題)。
    } 

}
@Component
 パブリック クラスの学生{ 

    @value( "小の明" プライベート文字列名; 

    // 请看这里
    @Autowired 
    @Qualifier( "WORK2" プライベート宿題宿題。

    パブリック学生(){}
     公共学生(文字列名、宿題宿題){
         この .nameの= 名前。
        この .homework = 宿題。
    } 

    公共 ボイドdoHomeWork(){ 
        System.out.printlnは(homework.getContent())。
    } 

    パブリック文字列のgetName(){
        返す名前を。
    } 

    公共 ボイドのsetName(文字列名){
         この .nameの= 名前。
    } 

    パブリック宿題getHomework(){
         戻り宿題。
    } 

    公共 ボイドsetHomework(宿題宿題){
         この .homework = 宿題。
    } 


}

注射はまた、同じパラメータを使用する場合、豆@Qualifierアノテーションを作成するときに私が使用します。これは、あいまいな、と自動組立は、通常のだろうではないだろう。組み立てられるBeanを示すように開発プロセスで使用するために推奨されます。

親指アップコレクション利息を歓迎し、あなたを助けるためにがある場合は、この1は、ここでそれを共有することになります。

おすすめ

転載: www.cnblogs.com/chenyulin/p/11225093.html