Spring系列(十一):@Profile 注解用法介紹
今天給大家分享Spring屬性注入的注解@Profile?介紹,希望對(duì)大家能有所幫助!? ? ? ?

?? ? ? ?
一、@Profile 注解的作用
在Spring容器中如果存在同一類型的多個(gè)組件,可以使用@Profile注解標(biāo)識(shí)實(shí)際要獲取的是哪一個(gè)bean,這在不同的環(huán)境使用不同的變量的場(chǎng)景下非常有用。最典型的例子:開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境會(huì)配置不同的數(shù)據(jù)源,在盡量不修改代碼的情況下,可以使用這個(gè)注解來(lái)動(dòng)態(tài)指定要連接的數(shù)據(jù)源。
二、@Profile 指定環(huán)境的方式
2.1 JVM啟動(dòng)參數(shù)
運(yùn)行的時(shí)候給虛擬機(jī)參數(shù)位置增加 -Dspring.profiles.active=dev
2.2 通過(guò)代碼方式控制:
首先創(chuàng)建一個(gè)AnnotationConfigApplicationContext
設(shè)置環(huán)境變量,指定要激活的環(huán)境
注冊(cè)配置類
啟動(dòng)的時(shí)候刷新容器
三、@Profile 實(shí)現(xiàn)切換數(shù)據(jù)源示例
3.1 導(dǎo)入依賴
3.2 新建數(shù)據(jù)源配置文件dataSource.properties
3.3 新建TestProfileConfig.java 配置類
3.4 新建測(cè)試類TestProfile.java
輸出結(jié)果:dataSourceDevdataSourceOnLine
四、使用總結(jié)
1、針對(duì)標(biāo)注了環(huán)境標(biāo)識(shí)的bean,只有在這個(gè)環(huán)境被激活的時(shí)候,才會(huì)注入到容器當(dāng)中。默認(rèn)是default環(huán)境。2、如果@Profile 注解的位置在類上,相當(dāng)于只有在指定該環(huán)境的情況下,整個(gè)配置類里面的配置才有機(jī)會(huì)生效。3、針對(duì)沒(méi)有標(biāo)注環(huán)境表示的bean,在任何環(huán)境下都可以被正常加載。