Spring中的@ConfigurationProperties在方法上的使用詳解
前言
在學(xué)習(xí)spring的時(shí)候,@ConfigurationProperties應(yīng)該經(jīng)常被使用到,作用在類上的時(shí)候,將該類的屬性取值 與配置文件綁定,并生成配置bean對(duì)象,放入spring容器中,提供給其他地方使用。
在工作中,或者看spring內(nèi)部代碼的時(shí)候,無(wú)意發(fā)現(xiàn)@ConfigurationProperties居然還可以用在方法上,點(diǎn)開@ConfigurationProperties注解的時(shí)候,我們發(fā)現(xiàn):
// targer:可作用在類、方法上 @Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ConfigurationProperties { }
似乎平時(shí)我們都是用在類上的,因此特意寫這篇文章記錄一下,記錄@ConfigurationProperties的使用方式。
先說(shuō)結(jié)論
- @ConfigurationProperties無(wú)論是使用在類上,或用在方法上,其本質(zhì)都是將某個(gè)配置類的屬性值與配置文件application.yml中內(nèi)容進(jìn)行綁定。
- 其使用場(chǎng)景用如下三種:
- @ConfigurationProperties + @Component + 在類上使用的場(chǎng)景
- @ConfigurationProperties + @EnableConfigurationProperties 在類上使用的場(chǎng)景
- @ConfigurationProperties + @Bean 在方法上使用的場(chǎng)景
代碼解釋
@Component + @ConfigurationProperties
在類上使用@ConfigurationProperties效果:
@Component @ConfigurationProperties(prefix = "test.config") @Setter @ToString public class TestConfigDemo { private String username; private String pwd; } // yml test: config: username: test-config-username pwd: test-config-pwd // 測(cè)試代碼 @Component public class TestConfigAppRunner implements ApplicationRunner { @Autowired TestConfigDemo testConfigDemo; @Override public void run(ApplicationArguments args) throws Exception { System.out.println(testConfigDemo); } }
從上述可看出@ConfigurationProperties的作用,而@ConfigurationProperties的使用則是在配置類上需要有set方法、以及是需要@Component。
@EnableConfigurationProperties + @ConfigurationProperties
這里不做過(guò)多說(shuō)明
@Bean + @ConfigurationProperties
直接看代碼:
// 該配置類上 無(wú) 任何spring的注解 @Setter @ToString public class TestConfigDemo { private String username; private String pwd; }
// 準(zhǔn)備個(gè)@Configuration 配置類 @Configuration public class ConfigurationDemo { // 這里將TestConfigDemo 配置類 生成bean對(duì)象 // 此時(shí):TestConfigDemo里面的屬性將與配置文件yml內(nèi)容進(jìn)行綁定 @Bean @ConfigurationProperties(prefix = "test.config") public TestConfigDemo testConfigDemo(){ return new TestConfigDemo(); } }
@Component public class TestConfigAppRunner implements ApplicationRunner { @Autowired TestConfigDemo testConfigDemo; @Override public void run(ApplicationArguments args) throws Exception { System.out.println(testConfigDemo); } }
看到上述的例子,想必大家內(nèi)心此時(shí)的想法是:@ConfigurationProperties使用在方法上的效果,跟使用在類上的完全沒(méi)任何區(qū)別,只是將@ConfigurationProperties的位置換了一個(gè)地方,并無(wú)太大區(qū)別吧。
但其出現(xiàn)必然有其存在意義: 個(gè)人覺(jué)得,其作用就是,如果項(xiàng)目中有個(gè)@Configuration這種類的話,可以把config配置類的注解內(nèi)容等都放入該類中,達(dá)到一種配置好管理的效果,之后如果要改什么內(nèi)容,只要看@Configuration這種類即可,無(wú)需到處找。
到此這篇關(guān)于Spring中的@ConfigurationProperties在方法上的使用詳解的文章就介紹到這了,更多相關(guān)@ConfigurationProperties的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot熱部署實(shí)現(xiàn)原理及實(shí)例詳解
這篇文章主要介紹了Springboot熱部署實(shí)現(xiàn)原理及實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05這么設(shè)置IDEA中的Maven,再也不用擔(dān)心依賴下載失敗了
今天給大家?guī)?lái)一個(gè)IDEA中Maven設(shè)置的小技巧.這個(gè)技巧可以說(shuō)非常有用,學(xué)會(huì)設(shè)置之后,再也不用擔(dān)心maven依賴下載變慢的問(wèn)題,需要的朋友可以參考下2021-05-05SpringMVC打印請(qǐng)求參數(shù)和響應(yīng)數(shù)據(jù)最優(yōu)方案
項(xiàng)目中經(jīng)常需要打印http請(qǐng)求的參數(shù)和響應(yīng)數(shù)據(jù),本文給大家講解如何在SpringMVC打印請(qǐng)求參數(shù)和響應(yīng)數(shù)據(jù)最優(yōu)方案,感興趣的朋友跟隨小編一起看看吧2023-07-07IDEA2022.2的簡(jiǎn)介、下載與安裝、配置教程
IDEA是JetBrains公司推出一個(gè)集成開發(fā)工具,是Java開發(fā)工具中的翹楚,基于這個(gè)開發(fā)工具可以快速開發(fā)我們的Java相關(guān)項(xiàng)目,本文重點(diǎn)給大家介紹IDEA2022.2的簡(jiǎn)介、下載與安裝、初步配置,感興趣的朋友一起看看吧2022-11-11Java中數(shù)據(jù)庫(kù)常用的兩把鎖之樂(lè)觀鎖和悲觀鎖
這篇文章主要介紹了數(shù)據(jù)庫(kù)常用的兩把鎖之樂(lè)觀鎖和悲觀鎖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07異常解決SpringBoot項(xiàng)目啟動(dòng)卡住,無(wú)任何異常信息問(wèn)題
這篇文章主要介紹了異常解決SpringBoot項(xiàng)目啟動(dòng)卡住,無(wú)任何異常信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03Java基礎(chǔ)之刪除文本文件中特定行的內(nèi)容
這篇文章主要介紹了Java基礎(chǔ)之刪除文本文件中特定行的內(nèi)容,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04Kotlin Coroutines執(zhí)行異步加載示例詳解
這篇文章主要給大家介紹了關(guān)于Kotlin Coroutines執(zhí)行異步加載的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01MyBatisPlus-QueryWrapper多條件查詢及修改方式
這篇文章主要介紹了MyBatisPlus-QueryWrapper多條件查詢及修改方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06