1. 程式人生 > 其它 >springcloud+springboot框架 動態載入配置檔案 bootstrap.yml/properties檔案

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 就可以了