解決使用@Value(${×××))從properties文件取值的坑
@Value(${×××))從properties文件取值
前提:
你的實體類已經加入到了IOC容器中(使用@Compenet等注解)
報錯代碼:
@Value("${driver}") private String driver; @Value("${url}") private String url; @Value("${username}") private String userName; @Value("${password}") private String password;
properties文件
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/abc?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false username=root password=admin
此時你這樣寫 @Value 注解是無法獲取 properties文件中的值的
必須要在properties文件屬性前加上前綴(任意)即可
如:
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/abc?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false jdbc.username=root jdbc.password=admin
對應的類也要修改
@Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String userName; @Value("${jdbc.password}") private String password;
這樣就可以正常獲取了
補充:
1、靜態(tài)變量無法注入
2、Springboot默認屬性文件是application.properties
Spring @Value("${}")空值處理
場景:
Test類中有一個在application.properties配置的屬性email
@Value("${email}") private String email;
如果email在配置中沒有配置,應用啟動時將報找不到該屬性異常,導致啟動失敗。
解決方案1:
在Test類上同時加上@Component,@Lazy
解決方案2:
在springboot中提供了@ConditionalOnProperty注解
設置注入條件
@ConditionalOnProperty(name = "flag", havingValue = "true")
僅當配置文件application.properties中flag屬性為true時才會實例化bean
相關文章
關于IDEA 2020使用 mybatis-log-plugin插件的問題
這篇文章主要介紹了關于IDEA 2020使用 mybatis-log-plugin插件的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11微服務Spring Boot 整合 Redis 實現(xiàn)UV 數(shù)據(jù)統(tǒng)計的詳
這篇文章主要介紹了微服務Spring Boot 整合 Redis 實現(xiàn) UV 數(shù)據(jù)統(tǒng)計,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01通過jenkins發(fā)布java項目到目標主機上的詳細步驟
這篇文章主要介紹了通過jenkins發(fā)布java項目到目標主機上的詳細步驟,發(fā)布java項目的步驟很簡單,通過拉取代碼并打包,備份目標服務器上已有的要發(fā)布項目,具體內容詳情跟隨小編一起看看吧2021-10-10java書店系統(tǒng)畢業(yè)設計 總體設計(1)
這篇文章主要介紹了java書店系統(tǒng)畢業(yè)設計,第一步系統(tǒng)總體設計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10