最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中的@Autowired、@Qualifier和@Primary注解詳解

 更新時間:2023年11月02日 10:24:28   作者:桐花思雨  
這篇文章主要介紹了Spring中的@Autowired、@Qualifier和@Primary注解詳解,@Autowired?注解,可以對類成員變量、方法和構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動裝配的工作,@Autowired?是默認(rèn)根據(jù)?byType?進(jìn)行自動裝配的,需要的朋友可以參考下

1. @Autowired 注解

1.1. @Autowired 注解的使用

@Autowired 注解,可以對類成員變量、方法和構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動裝配的工作

1.1.1. 類成員變量上(較為常用)

@Controller
public class SoakController {
 
	@Autowired
	private SoakService soakService;
}

1.1.2. 用在方法上

@Controller
public class SoakController {
 
	private SoakService soakService;
	
	@Autowired 
	public void setSoakService(SoakService soakService) {
		this.soakService = soakService;
	}
}

1.1.3. 用在構(gòu)造器上

@Controller
public class SoakController {
 
	private SoakService soakService;
	
	@Autowired 
	public SoakController(SoakService soakService) {
		this.soakService = soakService;
	}
}

1.1.4. 用在參數(shù)上

@Controller
public class SoakController extends BaseController {
 
	private SoakService soakService;
	
	public SoakController(@Autowired SoakService soakService) {
		this.soakService = soakService;
	}
}

1.2. @Autowired 注解的說明

  • 默認(rèn)優(yōu)先按照 byType 去容器中找對應(yīng)的組件,找到就賦值
  • 如果找到多個相同類型的組件,再通過 byName 來到 IOC 容器中進(jìn)行查找
  • 默認(rèn)情況下,它具有強(qiáng)制契約特性,其所標(biāo)注的屬性必須是可裝配的。如果沒有 bean 可以裝配到 @Autowired 所標(biāo)注的屬性或參數(shù)中,那么你會看到 org.springframework.beans.factory.NoSuchBeanDefinitionException 的異常信息

2. @Autowired 配合 @Qualifier

  • @Autowired 是默認(rèn)根據(jù) byType 進(jìn)行自動裝配的,如果需要按 byName 進(jìn)行裝配,則需要配合 @Qualifier 注解使用
  • 如果容器中存在多個相同類型的組件,此時需要通過 byName 來進(jìn)行裝配,則需要配合 @Qualifier 注解使用

組件 1

@Service
public class BookService {// 類型為 BookService,name 為 bookService

}

組件 2

@Configuration
public class MainConfigOfAutowired {

	// 類型為 BookService,name 為 bookService01
    @Bean
    public BookService bookService01() {
        return new BookService();
    }
}

測試

@Autowired
@Qualifier("bookService01")
private BookService bookService;

@Test
public void MyTest() {
	System.out.println(bookService);
}

由于容器中存在 bookService01 和 bookService 兩個類型相同的組件 bean,那么此時可以使用 @Qualifier(“bookService01”) 明確指定 bean 的 name 后,@Autowired 不再根據(jù) byType 自動裝配了,而用 bookService01 作為組件的 name 去容器中查找,找到組件 2,裝配成功

3. @Autowired 配合 @Primary

  • Spring 在進(jìn)行自動裝配的時候,會 優(yōu)先 使用用 @Primary 標(biāo)注指定的 bean
  • 如果容器中有多個組件 Type 類型相同,注入的 bean 的 Name 名稱也相同,那么此時就可以使用 @Primary 注解,將某一個組件 優(yōu)先 注入
  • 不能把多個 bean 都標(biāo)注為 @Primary,不然你會得到 NoUniqueBeanDefinitionException 這個異常

組件 1

@Service
public class BookService { // 類型為 BookService,name 為 bookService

}

組件 2

@Configuration
public class MainConfigOfAutowired {

	// 類型為 BookService,name 為 bookService01
    @Primary
    @Bean
    public BookService bookService01() {
        return new BookService();
    }
}

測試 1

@Autowired
private BookService bookService;

@Test
public void MyTest() {
	System.out.println(bookService);
}

因為組件 2 使用了 @Primary 注解標(biāo)注,所以 @Autowired 會優(yōu)先使用 name 為 bookService01 進(jìn)行裝配

測試 2

@Qualifier("bookService")
@Autowired
private BookService bookService;

@Test
public void MyTest() {
	System.out.println(bookService);
}

雖然組件 2 使用了 @Primary 注解標(biāo)注,但是 @Qualifier 比 @Primary 的優(yōu)先級要高,所以使用注解 @Qualifier 標(biāo)注指定后, @Primary 就不起作用了,所以還是直接用指定的 bookService 作為組件的 name 去容器中裝配

到此這篇關(guān)于Spring中的@Autowired、@Qualifier和@Primary注解詳解的文章就介紹到這了,更多相關(guān)@Autowired、@Qualifier和@Primary注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker容器使用宿主機(jī)上的mongod/redis等服務(wù)詳解

    Docker容器使用宿主機(jī)上的mongod/redis等服務(wù)詳解

    這篇文章主要介紹了Docker容器使用宿主機(jī)上的mongod/redis等服務(wù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • springboot 熱啟動的過程圖解

    springboot 熱啟動的過程圖解

    這篇文章主要介紹了springboot 熱啟動的過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java 使用 FFmpeg 處理視頻文件示例代碼詳解

    Java 使用 FFmpeg 處理視頻文件示例代碼詳解

    這篇文章主要介紹了Java 使用 FFmpeg 處理視頻文件示例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Java生成條形碼code128(親測有效)

    Java生成條形碼code128(親測有效)

    這篇文章主要介紹了Java生成條形碼code128,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • swagger3.0實現(xiàn)https接口請求全過程

    swagger3.0實現(xiàn)https接口請求全過程

    文章描述了在開發(fā)過程中遇到Swagger攔截器配置錯誤的問題,并通過自定義Swagger攔截器解決了該問題,最后重啟項目以應(yīng)用更改
    2026-01-01
  • 學(xué)習(xí)Java之IO流的基礎(chǔ)概念詳解

    學(xué)習(xí)Java之IO流的基礎(chǔ)概念詳解

    這篇文章主要給大家介紹了Java中的IO流,我們首先要搞清楚一件事,就是為什么需要IO流這個東西,但在正式學(xué)習(xí)IO流的使用之前,小編有必要帶大家先了解一下IO流的基本概念,需要的朋友可以參考下
    2023-09-09
  • Springboot錯誤處理機(jī)制實現(xiàn)原理解析

    Springboot錯誤處理機(jī)制實現(xiàn)原理解析

    這篇文章主要介紹了springboot錯誤處理機(jī)制實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java 自定義注解及利用反射讀取注解的實例

    Java 自定義注解及利用反射讀取注解的實例

    下面小編就為大家?guī)硪黄狫ava 自定義注解及利用反射讀取注解的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • SpringBoot yml配置敏感信息加密的實現(xiàn)

    SpringBoot yml配置敏感信息加密的實現(xiàn)

    本文主要介紹了SpringBoot yml配置敏感信息加密的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • Java中的cglib原理解析

    Java中的cglib原理解析

    這篇文章主要介紹了Java中的cglib原理解析,由于代理類繼承了被代理類,所以調(diào)用sayHello()方法時會直接調(diào)用代理類的sayHello()方法,而在代理類的方法中,調(diào)用了Callback的邏輯,需要的朋友可以參考下
    2023-10-10

最新評論

泗洪县| 永德县| 芒康县| 滦南县| 巴楚县| 平遥县| 巴南区| 山阴县| 阜阳市| 紫金县| 峨眉山市| 阿荣旗| 长阳| 松阳县| 崇礼县| 渝中区| 甘德县| 木兰县| 都昌县| 罗平县| 新乡县| 平罗县| 靖安县| 晋中市| 林西县| 威海市| 景宁| 沈丘县| 内丘县| 永福县| 西平县| 龙海市| 武城县| 嵊州市| 十堰市| 仙居县| 德化县| 萨嘎县| 宜兴市| 新丰县| 工布江达县|