溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

@Qualifier的作用是什么

發布時間:2021-06-22 18:01:00 來源:億速云 閱讀:290 作者:Leah 欄目:編程語言

@Qualifier的作用是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

@Qualifier的作用

這是官方的介紹

This annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring. It may also be used to annotate other custom annotations that can then in turn be used as qualifiers.

簡單的理解就是:

  • 在使用@Autowire自動注入的時候,加上@Qualifier(“test”)可以指定注入哪個對象;

  • 可以作為篩選的限定符,我們在做自定義注解時可以在其定義上增加@Qualifier,用來篩選需要的對象。這個理解看下面的代碼吧,不好解釋。

功能介紹

首先是對(1)的理解。

//我們定義了兩個TestClass對象,分別是testClass1和testClass2//我們如果在另外一個對象中直接使用@Autowire去注入的話,spring肯定不知道使用哪個對象//會排除異常 required a single bean, but 2 were found@Configurationpublic class TestConfiguration {   @Bean("testClass1")
   TestClass testClass1(){       return new TestClass("TestClass1");
   }   @Bean("testClass2")
   TestClass testClass2(){       return new TestClass("TestClass2");
   }
}

下面是正常的引用

@RestControllerpublic class TestController {//此時這兩個注解的連用就類似 @Resource(name="testClass1")@Autowired@Qualifier("testClass1")
    private TestClass testClass;@GetMapping("/test")
    public Object test(){return testClassList;
    }

}

@Autowired和@Qualifier這兩個注解的連用在這個位置就類似 @Resource(name=“testClass1”)

對(2)的理解

@Configurationpublic class TestConfiguration {//我們調整下在testClass1上增加@Qualifier注解@Qualifier@Bean("testClass1")
    TestClass testClass1(){return new TestClass("TestClass1");
    }

    @Bean("testClass2")TestClass testClass2(){return new TestClass("TestClass2");
    }
}
@RestControllerpublic class TestController {//我們這里使用一個list去接收testClass的對象@AutowiredList<TestClass> testClassList= Collections.emptyList();    @GetMapping("/test")public Object test(){return testClassList;
    }
}

我們調用得到的結果是

[
     {"name": "TestClass1" },
    {       "name": "TestClass2"}
]

我們可以看到所有的testclass都獲取到了。接下來我們修改下代碼

@RestControllerpublic class TestController {@Qualifier //我們在這增加注解@AutowiredList<TestClass> testClassList= Collections.emptyList();@GetMapping("/test")
    public Object test(){return testClassList;
    }
}

和上面代碼對比就是在接收參數上增加了@Qualifier注解,這樣看是有什么區別,我們調用下,結果如下:

[
     {"name": "TestClass1" }
]

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女