springcloud+springboot框架 動態載入配置檔案 bootstrap.yml/properties檔案
1、springboot動態指定對應環境的yml檔案
1.1 SpringBoot在啟動載入配置檔案時,如沒有明確指定spring.profiles.active屬性,預設是載入application.yml或application.properties檔案。
還可以使用以下命名約定來定義特定於配置檔案的屬性:
application-sit.yml或application-sit.properties;application-xxx.yml或application-xxx.properties等等
2、spring.profiles.active簡介
含義:顯式啟用指定的配置檔案。
我們可以通過spring.profiles.active屬性來載入我們指定的 yml檔案,從而實現不同的環境載入不同配置yml檔案
用springcloud+springboot框架 有兩種解決方案
第一種:
通過bootstrap.yml檔案指定對應環境的配置檔案
衍生問題
1、每次上線都要將對應環境的spring.profiles.active改回來,如果有一次改動不回來會導致上線的環境不是生產環境,還需要重新改動bootstrap.yml 中spring.profiles.active 值
解決方案:參考第二種
第二種:通過java -jar 命令指定對應的配置檔案;同樣可以達到spring.profiles.active的效果
java -jar xxxxxx.jar --spring.profiles.active=sit
衍生問題
1、一般我們開發環境使用工具idea、Eclipse啟動的時候需要配置指定的配置檔案才能啟動。 可不可以本地開發環境啟動的環境載入預設的或者指定的配置檔案
嘗試解決中。。。。。。
可不可以第一種和第二種方案中和一下是不是就解決了
這樣配置本地調式是沒有問題,但是當放到liunx伺服器中用命令指定配置檔案啟動發現他還是預設使用bootstrap.yml配置
將bootstrap.yml改為application.yml可以瞭解決了
補充知識:SpringBoot不讀取bootstrap.yml/properties檔案
bootstrap.yml配置是SpringCloud專案才會用到的。
如果你的專案僅僅是一個SpringBoot專案,只會識別application.yml配置檔案。
由於SpringCloud是基於SpringBoot構建的,所有SpringCloud專案兩種檔案都會識別,這個時候才有優先順序的說法,SpringCloud專案是會優先讀取bootstrap配置在讀取application配置。
SpringBoot 專案中如果沒有依賴 spring-cloud-context 的話,是不會讀取bootstrap.properties 檔案
bootstrap.yml配置是SpringCloud專案才會用到的。
如果你的專案僅僅是一個SpringBoot專案,只會識別application.yml配置檔案。
如果SpringBoot專案想用到bootstrap.yml配置 加入依賴spring-cloud-context 就可以了