Spring Boot2(012):Profiles

Spring Boot2系列文章可以通过这里进行回顾:SpringBoot2(001):入门介绍、官网参考和博客汇总


  本文主要针对 SpringBoot 的 Profiles 进行介绍,实际上主要是说明如何激活某个 profiles 、甚至添加激活其他更多的 profiles 等,主要参考官方文档: 25. Profiles ,目录结构如下:

 

  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 之上)。参考 SpringApplicationsetAdditionalProfiles() 方法。

  例如,当一个有如下属性配置的应用通过参数 --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、参考

 

posted @ 2020-07-25 09:55  心明谭  阅读(443)  评论(0编辑  收藏  举报