一次@value取值失敗的原因


網上down了一份源碼。啟動后報錯,通過報錯信息定位到這個地方:

之前對這個@Value的實現方式我也沒了解過,所以乘機對springboot關於這一塊的源碼研究了一下。可以參考當時我的一篇分析記錄《@value》。對@value的原理又了一定的了解之后,發現問題並沒有處在解析這一塊,而是springboot並沒有讀取我們的配置文件。配置文件有兩個:

那么為什么沒有讀去呢?然后我又分析了一下源碼,發現默認情況下,只會讀去默認的配置文件路徑名稱。分別是:

file:./config/application.properties
file:./config/application.xml
file:./config/application.yml
file:./config/application.yaml
file:./application.properties
file:./application.xml
file:./application.yml
file:./application.yaml
classpath:/config/application.properties
classpath:/config/application.xml
classpath:/config/application.yml
classpath:/config/application.yaml
classpath:/application.properties
classpath:/application.xml
classpath:/application.yml
classpath:/application.yaml
file:./config/application-default.properties
file:./config/application-default.properties
file:./config/application.properties
file:./config/application-default.xml
file:./config/application-default.xml
file:./config/application.xml
file:./config/application-default.yml
file:./config/application-default.yml
file:./config/application.yml
file:./config/application-default.yaml
file:./config/application-default.yaml
file:./config/application.yaml
file:./application-default.properties
file:./application-default.properties
file:./application.properties
file:./application-default.xml
file:./application-default.xml
file:./application.xml
file:./application-default.yml
file:./application-default.yml
file:./application.yml
file:./application-default.yaml
classpath:/config/application-default.properties
classpath:/config/application-default.properties
classpath:/config/application.properties
classpath:/config/application-default.xml
classpath:/config/application-default.xml
classpath:/config/application.xml
classpath:/config/application-default.yml
classpath:/config/application-default.yml
classpath:/config/application.yml
classpath:/config/application-default.yaml
classpath:/config/application-default.yaml
classpath:/config/application.yaml
classpath:/application-default.properties
classpath:/application-default.properties
classpath:/application-default.xml
classpath:/application-default.xml
classpath:/application.xml
classpath:/application-default.yml
classpath:/application-default.yaml
classpath:/application.yaml
 並沒有我們的配置文件,也就是說默認情況下是讀取不到我們的配置文件的。
那么怎樣才能讓springboot在啟動的時候讀去我們指定的配置文件呢?有三種方法http://blog.csdn.net/qq_21387171/article/details/53876721:

(1)    使用@PropertySource注解

         直接在啟動類上使用@PropertySource注解來加載不同的配置文件,具體如下所示:


(2)    修改spring.profiles.active屬性

         需要在application.properties文件中通過spring.profiles.active屬性來設置,其值對應{profile}值,如:spring.profiles.active=dev就會加載application-dev.properties配置文件內容,具體如下所示:


(3)    執行命令行

         如上面介紹所講的一樣,我們可以使用命令行,比如執行java -jar xxx.jar --spring.profiles.active=test,可以觀察到服務端口被設置為8082,也就是測試環境的配置(test)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM