Spring Boot2(012):Profiles
Spring Boot2系列文章可以通過這裡進行回顧:SpringBoot2(001):入門介紹、官網參考和部落格彙總
本文主要針對SpringBoot 的 Profiles 進行介紹,實際上主要是說明如何啟用某個 profiles 、甚至新增啟用其他更多的 profiles 等,主要參考官方文件: 25. Profiles ,目錄結構如下:
- 1、Adding Active Profiles
- 2、Programmatically Setting Profiles(程式設計式設定 Profiles)
- 3、Profile-specific Configuration Files
- 4、參考
Spring Profiles 配置檔案提供了用來隔離應用程式部分配置的方法,並使其僅在某些特定環境中可用。任何使用 @Component 或 @Configuration 註解的 bean 都可以標記為 @Profile 來進行載入時的限制。如下例子:
@Configuration
@Profile("production")
public class ProductionConfiguration {
// ...
}
開發者可以通過 Environment 環境變數屬性 spring.profiles.active 來指定啟用哪個 profiles 。開發者可以使用本章前面描述的任何方式指定該屬性。例如,可以在 application.properties 中指定:
spring.profiles.active=dev,hsqldb
還可以通過如下命令列引數來指定:
--spring.profiles.active=dev,hsqldb
1、Adding Active Profiles
spring.profiles.active 屬性和其他屬性一樣,也遵循配置的優先順序順序,由最高優先順序的 PropertySource 確認。這意味著開發者可以在 application.properties 進行指定,然後在命令列引數中進行替換。
有時候,在一些場景中,直接在 active profiles 中增加 profile-specific properties 或許比直接替換會更有用。 spring.profiles.include 屬性可以用於無條件地增加 active profiles 。SpringApplication 入口點還有一個用於設定附加 profiles 的 Java API (也就是說,在 spring.profiles.active 屬性啟用的那些 profiles 之上)。參考
例如,當一個有如下屬性配置的應用通過引數 --spring.profiles.active=prod 進行執行時,proddb 和 prodmq 都會被啟用:
--- my.property: fromyamlfile --- spring.profiles: prod spring.profiles.include: - proddb - prodmq
注:需要注意 spring.profiles 屬性可以在 YAML 文件中定義,以確定該特定配置文件何時被包含在配置中。詳情參考:Section 77.7, “Change Configuration Depending on the Environment”
2、Programmatically Setting Profiles(程式設計式設定 Profiles)
開發者可以在應用執行之前通過程式設計式呼叫 SpringApplication.setAdditionalProfiles(…) 的方式設定啟用的 profiles (active profiles)。另外通過 Spring 的 ConfigurableEnvironment 介面來啟用 profiles 也是可行的。
3、Profile-specific Configuration Files
application.properties (或者 application.yml) 和通過 @ConfigurationProperties 引用到的檔案的配置屬性都會被當作檔案進行載入。詳情參考:Section 24.4, “Profile-specific Properties”或者參考筆者的上一篇部落格中對此的簡要介紹:特定配置屬性 Profile-specific Properties
4、參考
- 官方文件:25. Profiles