Spring中的@ConfigurationProperties在方法上的使用詳解
前言
在學(xué)習(xí)spring的時(shí)候,@ConfigurationProperties應(yīng)該經(jīng)常被使用到,作用在類上的時(shí)候,將該類的屬性取值 與配置文件綁定,并生成配置bean對(duì)象,放入spring容器中,提供給其他地方使用。
在工作中,或者看spring內(nèi)部代碼的時(shí)候,無意發(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的使用方式。
先說結(jié)論
- @ConfigurationProperties無論是使用在類上,或用在方法上,其本質(zhì)都是將某個(gè)配置類的屬性值與配置文件application.yml中內(nèi)容進(jìn)行綁定。
- 其使用場景用如下三種:
- @ConfigurationProperties + @Component + 在類上使用的場景
- @ConfigurationProperties + @EnableConfigurationProperties 在類上使用的場景
- @ConfigurationProperties + @Bean 在方法上使用的場景
代碼解釋
@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
這里不做過多說明
@Bean + @ConfigurationProperties
直接看代碼:
// 該配置類上 無 任何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使用在方法上的效果,跟使用在類上的完全沒任何區(qū)別,只是將@ConfigurationProperties的位置換了一個(gè)地方,并無太大區(qū)別吧。
但其出現(xiàn)必然有其存在意義: 個(gè)人覺得,其作用就是,如果項(xiàng)目中有個(gè)@Configuration這種類的話,可以把config配置類的注解內(nèi)容等都放入該類中,達(dá)到一種配置好管理的效果,之后如果要改什么內(nèi)容,只要看@Configuration這種類即可,無需到處找。
到此這篇關(guān)于Spring中的@ConfigurationProperties在方法上的使用詳解的文章就介紹到這了,更多相關(guān)@ConfigurationProperties的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java多線程之JUC(java.util.concurrent)的常見類(多線程編程常用類)
這篇文章主要給大家介紹了關(guān)于Java多線程之JUC(java.util.concurrent)的常見類(多線程編程常用類)的相關(guān)資料,Java中的JUC(java.util.concurrent)包提供了一些并發(fā)編程中常用的類,這些類可以幫助我們更方便地實(shí)現(xiàn)多線程編程,需要的朋友可以參考下2024-02-02
mybatis3使用@Select等注解實(shí)現(xiàn)增刪改查操作
這篇文章主要介紹了mybatis3使用@Select等注解實(shí)現(xiàn)增刪改查操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
Spring Security基于json登錄實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Spring Security基于json登錄實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
一文教會(huì)你如何搭建vue+springboot項(xiàng)目
最近在搗鼓?SpringBoot?與?Vue?整合的項(xiàng)目,所以下面這篇文章主要給大家介紹了關(guān)于如何通過一篇文章教會(huì)你搭建vue+springboot項(xiàng)目,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
jar包啟動(dòng)時(shí)如何讀取配置文件優(yōu)先順序
SpringBoot啟動(dòng)時(shí)讀取配置文件有優(yōu)先順序,從高到低為:bat文件目錄/config、bat文件目錄、classpath/config、classpath,可以通過spring.config.location指定配置位置,覆蓋默認(rèn)順序,優(yōu)先級(jí)高的配置會(huì)覆蓋低的配置2026-05-05
如何使用mybatis-plus實(shí)現(xiàn)分頁查詢功能
最近在研究mybatis,然后就去找簡化mybatis開發(fā)的工具,發(fā)現(xiàn)就有通用Mapper和mybatis-plus兩個(gè)比較好的可是使用,可是經(jīng)過對(duì)比發(fā)現(xiàn)還是mybatis-plus比較好,下面這篇文章主要給大家介紹了關(guān)于如何使用mybatis-plus實(shí)現(xiàn)分頁查詢功能的相關(guān)資料,需要的朋友可以參考下2022-06-06
springboot?@Async?注解如何實(shí)現(xiàn)方法異步
這篇文章主要介紹了springboot?@Async?注解如何實(shí)現(xiàn)方法異步,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
解析Java虛擬機(jī)中類的初始化及加載器的父委托機(jī)制
這篇文章主要介紹了Java虛擬機(jī)中類的初始化及加載器的父委托機(jī)制,包括命名空間等深層次的知識(shí)點(diǎn)講解,需要的朋友可以參考下2015-11-11

