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

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

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

一 前言

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

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

二 實現方式

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

2.1 被單接口

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

  String getColor();
}

2.2 被單實現類

實現類A

重寫getColor()方法;輸出red

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

實現類B

重寫getColor()方法;輸出pink

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

2.3 配置類

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

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

}

2.4 測試類

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

  @Autowired
  Sheet sheet;

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

測試會報異常,原因是向spring容器注入了2個Sheet,無法區(qū)分是SheetA 還是 SheetB,所以會造成bean的歧義問題;

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

解決辦法一

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

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

解決辦法二

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 多數據源模式JPA整合sharding-jdbc實現數據脫敏

    多數據源模式JPA整合sharding-jdbc實現數據脫敏

    這篇文章主要為大家介紹了JPA項目中多數據源模式整合sharding-jdbc來實現數據脫敏,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • Java實現HDFS文件上傳下載

    Java實現HDFS文件上傳下載

    這篇文章主要為大家詳細介紹了Java實現HDFS文件上傳下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • CentOS安裝jdk的三種方法

    CentOS安裝jdk的三種方法

    這篇文章主要為大家詳細介紹了CentOS安裝jdk的三種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • SpringBoot整合quartz實現定時任務

    SpringBoot整合quartz實現定時任務

    這篇文章主要為大家詳細介紹了SpringBoot如何整合quartz實現定時任務,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-10-10
  • Java KindEditor粘貼圖片自動上傳到服務器功能實現

    Java KindEditor粘貼圖片自動上傳到服務器功能實現

    這篇文章主要介紹了Java KindEditor粘貼圖片自動上傳到服務器功能實現,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • SpringBoot實現設置動態(tài)定時任務的方法詳解

    SpringBoot實現設置動態(tài)定時任務的方法詳解

    這篇文章主要介紹了SpringBoot實現設置動態(tài)定時任務的方法詳解,SpringBoot是一個快速開發(fā)的Java框架,而動態(tài)定時任務是指可以在運行時動態(tài)添加、修改和刪除定時任務的功能,需要的朋友可以參考下
    2023-10-10
  • 詳解Spring Boot2 Webflux的全局異常處理

    詳解Spring Boot2 Webflux的全局異常處理

    這篇文章主要介紹了詳解Spring Boot2 Webflux的全局異常處理,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Java中的Semaphore原理解析

    Java中的Semaphore原理解析

    這篇文章主要介紹了Java中的Semaphore原理解析,Semaphore(信號量)是用來控制同時訪問特定資源的線程數量,它通過協(xié)調各個線程,以保證合理的使用公共資源,需要的朋友可以參考下
    2024-01-01
  • 詳解Spring框架---IOC裝配Bean

    詳解Spring框架---IOC裝配Bean

    本篇文章主要介紹了詳解Spring框架---IOC裝配Bean,提供了三種方式實例化Bean,具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • Java中的DelayQueue實現原理及應用場景詳解

    Java中的DelayQueue實現原理及應用場景詳解

    這篇文章主要介紹了Java中的DelayQueue實現原理及應用場景詳解,DelayQueue是一個沒有邊界BlockingQueue實現,加入其中的元素必需實現Delayed接口,當生產者線程調用put之類的方法加入元素時,會觸發(fā)Delayed接口中的compareTo方法進行排序,需要的朋友可以參考下
    2023-12-12

最新評論