? Spring Boot 官方 提供了兩種常用的配置文件格式,分別是 properties 、 YML 格式。相比於 properties 來說, YML 更加年輕,層級也是更加分明。 強烈推薦使用 YML 格式
? Spring Boot項目 啟動會掃描以下位置的 application.properties 或者 application.yml 作為默認的配置文件.
徒手撕源碼
內部類Loader的load方法
getSearchLocations()方法
asResolvedSet()
下面給出優先級 從高到低 的配置文件排列順序:
以設置應用端口為例 初體驗Spring Boot配置文件
properties後綴結尾(application.properties)
yml/yaml後綴結尾(application.yml/application.yaml)
數字,字符串,布爾,日期
對象、Map
數組
數字,字符串,布爾,日期
對象、Map
數組
@ConfigurationProperties(prefix = "person")詳解
標註在類上
標註在方法上
綜上所述
? @ConfigurationProperties 註解能夠輕松的讓配置文件跟實體類綁定在壹起。
?值得關註的是: @ConfigurationProperties 這個註解僅僅是支持從 Spring Boot的默認配置文件 中取值,也就是 application.properties 、 application.yml 、 application.yaml ,那我們如何從自定義配置文件取值呢?
?別著急,有解決辦法,那就是再加壹個註解: @PropertySource(value = "classpath:custom-profile.properties") ,下面會有對 @PropertySource 註解的介紹。請耐心往下面看。
使用@PropertySource註解
對應配置文件
創建兩個配置文件 custom-profile.yml、custom-profile1.yml ,如下去引入。
我們可以通過控制變量法進行測試,具體過程我這裏就不贅述了。
直接說 結論 吧: Spring加載順序 為 從左到右順序加載 ,後加載的會 覆蓋 先加載的屬性值。
另外需要註意的是 : @PropertySource 默認加載 xxx.properties類型 的配置文件,不能加載 YML格式 的配置文件。如何解決呢?下面來解決這壹問題
對應配置文件:
編寫PropertiesController
擴展功能
application.yml 主配置文件
application-dev.yml 開發配置文件
application-prod.yml 生產配置文件
application-test.yml 測試配置文件
(1)主配置文件:配置激活選項
(2)其他配置文件:指定屬於哪個環境(同yml,只不過表現形式是 key=value 的,三個配置文件分別是: application-dev.properties , application-prod.properties , application-test.properties )
?無論是使用上述 多文檔塊 的方式,還是新建 application-test.yml 文件,都可以在配置文件中指定 spring.profiles.active=test 激活指定的profile。
感謝閱讀小生文章。祝大家早日富可敵國,實現財富自由。
寫文不易 ,壹定要 點贊、評論、收藏哦 , 感謝感謝感謝!!!