springboot中@ConfigurationProperties無效果的解決方法
原因有一下幾點(diǎn)
前綴prefix沒寫對(概率不大,但也有)
@Data
@ConfigurationProperties(prefix = "message")
public class MyBean {
private String msg;
public MyBean(){
System.out.println("MyBean初始化完成");
}
}
2.類的方法中沒有setter
解決方法:
- 用lombok的注解
- 或者自己寫getter setter
3.寫了ConfigurationProperties但是沒寫Component
交給spring管理
4.是用AnnotationConfigApplicationContext(MyBeanConfig.class);獲取的bean不是一個(gè)spring容器(我的問題在于這個(gè))
用spring容器的自動(dòng)注入是有值的
但自己單開一個(gè)spring容器,這是兩個(gè),所以不會(huì)有值,有值的放到了第一個(gè)spring的容器中

第一個(gè)spring容器在


第二個(gè)spring容器是我在測試類開的,


@ConfigurationProperties
在Spring Boot中注解@ConfigurationProperties有三種使用場景。
場景一
使用@ConfigurationProperties和@Component注解到bean定義類上,這里@Component代指同一類實(shí)例化Bean的注解。
基本使用實(shí)例如下:
// 將類定義為一個(gè)bean的注解,比如 @Component,@Service,@Controller,@Repository
// 或者 @Configuration
@Component
// 表示使用配置文件中前綴為user1的屬性的值初始化該bean定義產(chǎn)生的的bean實(shí)例的同名屬性
// 在使用時(shí)這個(gè)定義產(chǎn)生的bean時(shí),其屬性name會(huì)是Tom
@ConfigurationProperties(prefix = "user1")
public class User {
private String name;
// 省略getter/setter方法
}
對應(yīng)application.properties配置文件內(nèi)容如下:
user1.name=Tom
在此種場景下,當(dāng)Bean被實(shí)例化時(shí),@ConfigurationProperties會(huì)將對應(yīng)前綴的后面的屬性與Bean對象的屬性匹配。符合條件則進(jìn)行賦值。
場景二
使用@ConfigurationProperties和@Bean注解在配置類的Bean定義方法上。以數(shù)據(jù)源配置為例:
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
}
這里便是將前綴為“spring.datasource.primary”的屬性,賦值給DataSource對應(yīng)的屬性值。
@Configuration注解的配置類中通過@Bean注解在某個(gè)方法上將方法返回的對象定義為一個(gè)Bean,并使用配置文件中相應(yīng)的屬性初始化該Bean的屬性。
場景三
使用@ConfigurationProperties注解到普通類,然后再通過@EnableConfigurationProperties定義為Bean。
@ConfigurationProperties(prefix = "user1")
public class User {
private String name;
// 省略getter/setter方法
}
這里User對象并沒有使用@Component相關(guān)注解。
而該User類對應(yīng)的使用形式如下:
@SpringBootApplication
@EnableConfigurationProperties({User.class})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
上述代碼中,通過@EnableConfigurationProperties對User進(jìn)行實(shí)例化時(shí),便會(huì)使用到@ConfigurationProperties的功能,對屬性進(jìn)行匹配賦值。
到此這篇關(guān)于springboot中@ConfigurationProperties無效果的文章就介紹到這了,更多相關(guān)springboot @ConfigurationProperties內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot中@ConfigurationProperties注解的使用與源碼詳解
- SpringBoot @ConfigurationProperties使用詳解
- SpringBoot @ConfigurationProperties注解的簡單使用
- springboot如何靜態(tài)加載@configurationProperties
- springboot @ConfigurationProperties和@PropertySource的區(qū)別
- SpringBoot中@ConfigurationProperties 配置綁定
- SpringBoot中@ConfigurationProperties實(shí)現(xiàn)配置自動(dòng)綁定的方法
- SpringBoot中的@ConfigurationProperties注解的使用
- 深入解析Spring Boot中的@ConfigurationProperties注解
相關(guān)文章
SpringBoot整合log4j日志與HashMap的底層原理解析
這篇文章主要介紹了SpringBoot整合log4j日志與HashMap的底層原理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Spring?Boot?接口加解密功能實(shí)現(xiàn)
在我們?nèi)粘5腏ava開發(fā)中,免不了和其他系統(tǒng)的業(yè)務(wù)交互,或者微服務(wù)之間的接口調(diào)用;如果我們想保證數(shù)據(jù)傳輸?shù)陌踩?,對接口出參加密,入?yún)⒔饷埽@篇文章主要介紹了Spring?Boot?接口加解密功能實(shí)現(xiàn),需要的朋友可以參考下2023-04-04
MyBatis-Plus多表聯(lián)查(動(dòng)態(tài)查詢)的項(xiàng)目實(shí)踐
本文主要介紹了MyBatis-Plus多表聯(lián)查(動(dòng)態(tài)查詢)的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Java詳解HashMap實(shí)現(xiàn)原理和源碼分析
這篇文章主要介紹了Java關(guān)于HashMap的實(shí)現(xiàn)原理并進(jìn)行源碼分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
SpringBoot集成E-mail發(fā)送各種類型郵件
這篇文章主要為大家詳細(xì)介紹了SpringBoot集成E-mail發(fā)送各種類型郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
Spring?Boot項(xiàng)目如何優(yōu)雅實(shí)現(xiàn)Excel導(dǎo)入與導(dǎo)出功能
在我們平時(shí)工作中經(jīng)常會(huì)遇到要操作Excel的功能,比如導(dǎo)出個(gè)用戶信息或者訂單信息的Excel報(bào)表,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目中如何優(yōu)雅實(shí)現(xiàn)Excel導(dǎo)入與導(dǎo)出功能的相關(guān)資料,需要的朋友可以參考下2022-06-06
詳解Java多線程編程中CountDownLatch阻塞線程的方法
在Java中和ReadWriteLock.ReadLock一樣,CountDownLatch的本質(zhì)也是一個(gè)"共享鎖",這里我們就來詳解Java多線程編程中CountDownLatch阻塞線程的方法:2016-07-07
SpringBoot2.3.0配置JPA的實(shí)現(xiàn)示例
這篇文章主要介紹了SpringBoot2.3.0配置JPA的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

