<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          @Qualifier的作用和應(yīng)用

          共 4144字,需瀏覽 9分鐘

           ·

          2021-04-28 18:15

          點(diǎn)擊上方藍(lán)色“小哈學(xué)Java”,選擇“設(shè)為星標(biāo)

          回復(fù)“資源”獲取獨(dú)家整理的學(xué)習(xí)資料!


          來(lái)源:blog.csdn.net/qq_30062181/article/details/107619529

          @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.

          簡(jiǎn)單的理解就是:

          • 在使用@Autowire自動(dòng)注入的時(shí)候,加上@Qualifier(“test”)可以指定注入哪個(gè)對(duì)象;
          • 可以作為篩選的限定符,我們?cè)谧鲎远x注解時(shí)可以在其定義上增加@Qualifier,用來(lái)篩選需要的對(duì)象。這個(gè)理解看下面的代碼吧,不好解釋。

          功能介紹

          首先是對(duì)(1)的理解。

          //我們定義了兩個(gè)TestClass對(duì)象,分別是testClass1和testClass2
          //我們?nèi)绻诹硗庖粋€(gè)對(duì)象中直接使用@Autowire去注入的話,spring肯定不知道使用哪個(gè)對(duì)象
          //會(huì)排除異常 required a single bean, but 2 were found
          @Configuration
          public class TestConfiguration {
             @Bean("testClass1")
             TestClass testClass1(){
                 return new TestClass("TestClass1");
             }
             @Bean("testClass2")
             TestClass testClass2(){
                 return new TestClass("TestClass2");
             }
          }

          下面是正常的引用

          @RestController
          public class TestController {

              //此時(shí)這兩個(gè)注解的連用就類似 @Resource(name="testClass1")
              @Autowired
              @Qualifier("testClass1")
              private TestClass testClass;

              @GetMapping("/test")
              public Object test(){
                  return testClassList;
              }

          }

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

          對(duì)(2)的理解

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

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

          我們調(diào)用得到的結(jié)果是

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

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

          @RestController
          public class TestController {

              @Qualifier //我們?cè)谶@增加注解
              @Autowired
              List<TestClass> testClassList= Collections.emptyList();

              @GetMapping("/test")
              public Object test(){
                  return testClassList;
              }
          }

          和上面代碼對(duì)比就是在接收參數(shù)上增加了@Qualifier注解,這樣看是有什么區(qū)別,我們調(diào)用下,結(jié)果如下:

          [
               {
                  "name""TestClass1"
               }
          ]

          返回結(jié)果只剩下增加了@Qualifier注解的TestClass對(duì)象,這樣我們就可以理解官方說(shuō)的標(biāo)記篩選是什么意思了。

          另外,@Qualifier注解是可以指定value的,這樣我們可以通過(guò)values來(lái)分類篩選想要的對(duì)象了,這里不列舉代碼了,感興趣的同學(xué)自己試試。

          1. 死磕18個(gè)Java8日期處理,工作必用!收藏起來(lái)~

          2. 使用 Redis 實(shí)現(xiàn)一個(gè)輕量級(jí)的搜索引擎,牛x啊 !

          3. 爆肝,52條SQL語(yǔ)句,性能優(yōu)化,干貨必收藏 !

          4. Redis 問(wèn)題排查解決手冊(cè)(值得收藏)

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù) Java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

          謝謝支持喲 (*^__^*)

          瀏覽 46
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  最新国产免费黄色 | 欧美日韩性爱一区二区三区 | 青青草免费在线视 | 亚洲小穴 | AAA久久 |