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

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);
}

因?yàn)榻M件 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)文章

  • 圖文教程教你IDEA中的Spring環(huán)境搭建+簡單入門

    圖文教程教你IDEA中的Spring環(huán)境搭建+簡單入門

    這篇文章主要介紹了圖文教程教你IDEA中的Spring環(huán)境搭建+簡單入門,Spring的環(huán)境搭建使用Maven更加方便,需要的朋友可以參考下
    2023-03-03
  • java判斷回文數(shù)示例分享

    java判斷回文數(shù)示例分享

    這篇文章主要介紹了java判斷回文數(shù)示例,需要的朋友可以參考下
    2014-03-03
  • 詳解Java實(shí)現(xiàn)單例的五種方式

    詳解Java實(shí)現(xiàn)單例的五種方式

    這篇文章主要介紹了詳解Java實(shí)現(xiàn)單例的五種方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • sharding-jdbc中的事務(wù)詳細(xì)解讀

    sharding-jdbc中的事務(wù)詳細(xì)解讀

    這篇文章主要介紹了sharding-jdbc中的事務(wù)詳細(xì)解讀,sharding-jdbc在分庫分表方面提供了很大的便利性,在使用DB的時候,通常都會涉及到事務(wù)這個概念,而在分庫分表的環(huán)境上再加上事務(wù),就會使事情變得復(fù)雜起來,需要的朋友可以參考下
    2023-12-12
  • Java?Swing實(shí)現(xiàn)QQ登錄頁面

    Java?Swing實(shí)現(xiàn)QQ登錄頁面

    這篇文章主要為大家詳細(xì)介紹了Java?Swing實(shí)現(xiàn)QQ登錄頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Jenkin郵件收發(fā)實(shí)現(xiàn)原理及過程詳解

    Jenkin郵件收發(fā)實(shí)現(xiàn)原理及過程詳解

    這篇文章主要介紹了Jenkin郵件收發(fā)實(shí)現(xiàn)原理及過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Springboot打包代碼,反編譯后代碼混淆方式(防止還原代碼)

    Springboot打包代碼,反編譯后代碼混淆方式(防止還原代碼)

    文章主要介紹了如何對Spring Boot項(xiàng)目進(jìn)行jar包混淆,以防止反編譯還原原始代碼,通過在項(xiàng)目中添加proguard.cfg文件并配置Maven插件,可以實(shí)現(xiàn)代碼混淆,從而增加反編譯的難度
    2024-11-11
  • mybatis的insert插入后獲取自增id的方法詳解(從controller到mapper)

    mybatis的insert插入后獲取自增id的方法詳解(從controller到mapper)

    這篇文章主要介紹了mybatis的insert插入后獲取自增id的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • java?Web實(shí)現(xiàn)用戶登錄功能圖文教程

    java?Web實(shí)現(xiàn)用戶登錄功能圖文教程

    這篇文章主要給大家介紹了關(guān)于java?Web實(shí)現(xiàn)用戶登錄功能的相關(guān)資料,在開發(fā)Web應(yīng)用程序中,用戶登錄是一個常見的功能,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • SpringBoot自定義實(shí)現(xiàn)內(nèi)容協(xié)商的三種策略

    SpringBoot自定義實(shí)現(xiàn)內(nèi)容協(xié)商的三種策略

    內(nèi)容協(xié)商是HTTP協(xié)議中的一個重要概念,允許同一資源URL根據(jù)客戶端的偏好提供不同格式的表示,這篇文章主要介紹了SpringBoot自定義實(shí)現(xiàn)內(nèi)容協(xié)商的三種策略,希望對大家有一定的幫助
    2025-04-04

最新評論