欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring @Primary和@Qualifier注解原理解析

 更新時(shí)間:2020年04月18日 15:11:41   作者:知識(shí)追尋者  
這篇文章主要介紹了Spring @Primary和@Qualifier注解原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一 前言

本篇內(nèi)容主要是講解2個(gè)重要的注解使用方式和場(chǎng)景,@Primary,@Qualifier注解;其作用就是消除bean注入時(shí)的歧義,能夠讓spring容器知道加載哪個(gè)bean;

知識(shí)追尋者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 實(shí)現(xiàn)方式

如下示例中使用被單接口Sheet, 實(shí)現(xiàn)類(lèi)為SheetA , SHeetB ; 由于注入容器時(shí)都是 Sheet類(lèi)型,會(huì)發(fā)生異常,此時(shí)就是使用@Primary或者@Qualifier對(duì)注入的bean進(jìn)行限制,即可實(shí)現(xiàn)正常注入;

2.1 被單接口

/**
 * @Author lsc
 * <p> 被單</p>
 */
public interface Sheet {

  String getColor();
}

2.2 被單實(shí)現(xiàn)類(lèi)

實(shí)現(xiàn)類(lèi)A

重寫(xiě)getColor()方法;輸出red

/**
 * @Author lsc
 * <p> </p>
 */
public class SheetA implements Sheet {
  public String getColor() {
    return "red";
  }
}

實(shí)現(xiàn)類(lèi)B

重寫(xiě)getColor()方法;輸出pink

/**
 * @Author lsc
 * <p> </p>
 */
public class SheetB implements Sheet {
  public String getColor() {
    return "pink";
  }
}

2.3 配置類(lèi)

@Configuration
public class SheetConfig {
  @Bean
  public Sheet sheetA(){
    return new SheetA();
  }

  @Bean
  public Sheet sheetB(){
    return new SheetB();
  }

}

2.4 測(cè)試類(lèi)

/**
 * @Author lsc
 * <p> </p>
 */
@RunWith(SpringJUnit4ClassRunner.class)//創(chuàng)建spring應(yīng)用上下文
@ContextConfiguration(classes= {SheetConfig.class})//加載配置類(lèi)
public class SheetTest {

  @Autowired
  Sheet sheet;

  @Test
  public void sheetTest(){
    //
    System.out.println(sheet.getColor());
  }
}

測(cè)試會(huì)報(bào)異常,原因是向spring容器注入了2個(gè)Sheet,無(wú)法區(qū)分是SheetA 還是 SheetB,所以會(huì)造成bean的歧義問(wèn)題;

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException:

解決辦法一

在注入的bean上添加@Primary注解;示例如下,此時(shí)向sheetB上添加@Primary注解,spring掃碼注入bean時(shí)優(yōu)先注入帶有@Primary注解的bean;測(cè)試輸出結(jié)果為pink

@Bean
@Primary
public Sheet sheetB(){
return new SheetB();
}

解決辦法二

注入bean時(shí)添加@Qualifier注解,限定注入的Bean;此時(shí)輸出就是red

@Qualifier("sheetA")//限定注入Bean ID
@Autowired
Sheet sheet;

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Security OAuth2 實(shí)現(xiàn)登錄互踢的示例代碼

    Spring Security OAuth2 實(shí)現(xiàn)登錄互踢的示例代碼

    這篇文章主要介紹了Spring Security OAuth2實(shí)現(xiàn)登錄互踢的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Springboot中動(dòng)態(tài)語(yǔ)言groovy介紹

    Springboot中動(dòng)態(tài)語(yǔ)言groovy介紹

    Apache的Groovy是Java平臺(tái)上設(shè)計(jì)的面向?qū)ο缶幊陶Z(yǔ)言,這門(mén)動(dòng)態(tài)語(yǔ)言擁有類(lèi)似Python、Ruby和Smalltalk中的一些特性,可以作為Java平臺(tái)的腳本語(yǔ)言使用,這篇文章主要介紹了springboot中如何使用groovy,需要的朋友可以參考下
    2022-09-09
  • 基于json解析神器 jsonpath的使用說(shuō)明

    基于json解析神器 jsonpath的使用說(shuō)明

    這篇文章主要介紹了基于json解析神器 jsonpath的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • 如何更好的使用Java8中方法引用詳解

    如何更好的使用Java8中方法引用詳解

    在Java8中,我們可以直接通過(guò)方法引用來(lái)簡(jiǎn)寫(xiě)lambda表達(dá)式中已經(jīng)存在的方法,這種特性就叫做方法引用(Method Reference)。下面這篇文章主要給大家介紹了關(guān)于如何更好的使用Java8中方法引用的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • mybatis中返回多個(gè)map結(jié)果問(wèn)題

    mybatis中返回多個(gè)map結(jié)果問(wèn)題

    這篇文章主要介紹了mybatis中返回多個(gè)map結(jié)果問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java基于二分搜索樹(shù)、鏈表的實(shí)現(xiàn)的集合Set復(fù)雜度分析實(shí)例詳解

    Java基于二分搜索樹(shù)、鏈表的實(shí)現(xiàn)的集合Set復(fù)雜度分析實(shí)例詳解

    這篇文章主要介紹了Java基于二分搜索樹(shù)、鏈表的實(shí)現(xiàn)的集合Set復(fù)雜度分析,結(jié)合實(shí)例形式詳細(xì)分析了Java基于二分搜索樹(shù)、鏈表的實(shí)現(xiàn)的集合Set復(fù)雜度分析相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • Java?集合框架?Queue?和?Stack?體系

    Java?集合框架?Queue?和?Stack?體系

    這篇文章主要介紹了Java?集合框架Queue和Stack體系,Stack?繼承自Vector,并拓展了五個(gè)允許將容器視為棧結(jié)構(gòu)的操作,Queue接口定義了隊(duì)列的能力,它繼承自Collection,更多相關(guān)內(nèi)容需要得小伙伴可以參考一下
    2022-06-06
  • Java如何實(shí)現(xiàn)Unicode和中文相互轉(zhuǎn)換

    Java如何實(shí)現(xiàn)Unicode和中文相互轉(zhuǎn)換

    這篇文章主要介紹了Java如何實(shí)現(xiàn)Unicode和中文相互轉(zhuǎn)換問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • IDEA如何自動(dòng)生成serialVersionUID的設(shè)置

    IDEA如何自動(dòng)生成serialVersionUID的設(shè)置

    這篇文章主要介紹了IDEA如何自動(dòng)生成 serialVersionUID 的設(shè)置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Hibernate框架數(shù)據(jù)分頁(yè)技術(shù)實(shí)例分析

    Hibernate框架數(shù)據(jù)分頁(yè)技術(shù)實(shí)例分析

    這篇文章主要介紹了Hibernate框架數(shù)據(jù)分頁(yè)技術(shù),結(jié)合實(shí)例形式分析了Hibernate框架實(shí)現(xiàn)數(shù)據(jù)分頁(yè)的原理,步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-03-03

最新評(píng)論