本文为官方文档直译版本。原文链接
Spring Boot Profiles中文文档
- 引言
- 添加活动配置文件
- 配置文件组
- 通过编程设置配置文件
- 特定的配置文件
引言
Spring Profiles 提供了一种隔离应用程序配置的方法,使其仅在特定环境中可用。任何 @Component、@Configuration 或 @ConfigurationProperties 都可以标记为 @Profile,以限制加载环境,如下例所示:
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;@Configuration(proxyBeanMethods = false)
@Profile("production")
public class ProductionConfiguration {// ...}
如果
@ConfigurationPropertiesBean 是通过@EnableConfigurationProperties而不是自动扫描注册的,则需要在具有@EnableConfigurationProperties注解的@Configuration类上指定@Profile注解。在扫描@ConfigurationProperties的情况下,可在@ConfigurationProperties类本身指定@Profile注解。
您可以使用 spring.profiles.active Environment属性来指定哪些配置文件处于活动状态。你可以用本章前面描述的任何方式指定该属性。例如,你可以将其包含在 application.properties 中,如下例所示:
spring:profiles:active: "dev,hsqldb"
也可以使用以下开关在命令行中指定:--spring.profiles.active=dev,hsqldb。
如果没有激活配置文件,则会启用默认配置文件。默认配置文件的名称是 default,可使用 spring.profiles.default Environment属性对其进行调整,如下例所示:
spring:profiles:default: "none"
spring.profiles.active 和 spring.profiles.default 只能用于非特定配置文件。这意味着它们不能包含在特定配置文件或由 spring.config.activate.on-profile 激活的文件中。
例如,第二个文件配置无效:
# this document is valid
spring:profiles:active: "prod"
---
# this document is invalid
spring:config:activate:on-profile: "prod"profiles:active: "metrics"
添加活动配置文件
spring.profiles.active 属性遵循与其他属性相同的排序规则: 属性源最高者胜出。这意味着你可以在 application.properties 中指定活动配置文件,然后使用命令行开关替换它们。
有时,添加而非替换活动配置文件的属性也很有用。spring.profiles.include 属性可用于在由 spring.profiles.active 属性激活的配置文件基础上添加活动配置文件。SpringApplication 入口点还有一个用于设置附加配置文件的 Java API。请参见 SpringApplication 中的 setAdditionalProfiles() 方法。
例如,当运行具有以下属性的应用程序时,即使使用 --spring.profiles.active 开关,也会激活common和local配置文件:
spring:profiles:include:- "common"- "local"
与
spring.profiles.active类似,spring.profiles.include只能用于非特定配置文件。这意味着它不能包含在特定于配置文件的文件或由spring.config.activate.on-profile激活的文件中。
如果某个配置文件处于活动状态,还可以使用下一节所述的配置文件组来添加活动配置文件。
配置文件组
在应用程序中定义和使用的配置文件有时过于细化,使用起来很麻烦。例如,您可能有 proddb 和 prodmq 配置文件,用于独立启用数据库和消息功能。
为了解决这个问题,Spring Boot 允许您定义配置文件组。配置文件组允许您为相关的配置文件组定义一个逻辑名称。
例如,我们可以创建一个由 proddb 和 prodmq 配置文件组成的生产组。
spring:profiles:group:production:- "proddb"- "prodmq"
现在,我们可以使用 --spring.profiles.active=production 来启动应用程序,从而一次性激活production、prodb 和 prodmq 配置文件。
通过编程设置配置文件
您可以在应用程序运行前调用 SpringApplication.setAdditionalProfiles(...) 以编程方式设置激活的配置文件。也可以通过使用 Spring 的 ConfigurableEnvironment 接口来激活配置文件。
特定的配置文件
application.properties(或 application.yaml)和通过 @ConfigurationProperties 引用的文件的特定配置文件变体都被视为文件并加载。有关详情,请参阅 “配置文件特定文件”。