91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Spring @Primary和@Qualifier注解的用法

發布時間:2020-08-03 09:19:32 來源:億速云 閱讀:293 作者:小豬 欄目:編程語言

這篇文章主要講解了Spring @Primary和@Qualifier注解的用法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

一 前言

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

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

二 實現方式

如下示例中使用被單接口Sheet, 實現類為SheetA , SHeetB ; 由于注入容器時都是 Sheet類型,會發生異常,此時就是使用@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)//創建spring應用上下文
@ContextConfiguration(classes= {SheetConfig.class})//加載配置類
public class SheetTest {

  @Autowired
  Sheet sheet;

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

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

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

解決辦法一

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

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

解決辦法二

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

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

看完上述內容,是不是對Spring @Primary和@Qualifier注解的用法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

太康县| 绥棱县| 吐鲁番市| 瓦房店市| 自贡市| 斗六市| 邛崃市| 三门峡市| 秦皇岛市| 延边| 明光市| 高雄县| 定襄县| 黄平县| 伊宁县| 万年县| 瓮安县| 屏东县| 无棣县| 昆明市| 修文县| 铜陵市| 来安县| 武夷山市| 青州市| 浦县| 巴中市| 天柱县| 庆城县| 大理市| 昭平县| 桦南县| 卢龙县| 麻阳| 汉川市| 永和县| 镶黄旗| 化德县| 绥阳县| 乌兰察布市| 汉源县|