網上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)。