亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

商城县| 白水县| 双鸭山市| 凌源市| 宁安市| 厦门市| 万宁市| 宜丰县| 武川县| 榆中县| 兴海县| 烟台市| 葫芦岛市| 成安县| 娄底市| 高平市| 云南省| 新巴尔虎右旗| 南丰县| 灵川县| 广灵县| 阳信县| 隆安县| 兰州市| 巴林左旗| 乐安县| 苍南县| 固镇县| 无棣县| 沛县| 黑龙江省| 廊坊市| 西藏| 双桥区| 襄城县| 巴东县| 朝阳市| 泸西县| 南阳市| 无极县| 衡东县|