Spring Boot Profiles中文文档

本文为官方文档直译版本。原文链接

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 {// ...}

如果 @ConfigurationProperties Bean 是通过 @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.activespring.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 开关,也会激活commonlocal配置文件:

spring:profiles:include:- "common"- "local"

spring.profiles.active 类似,spring.profiles.include 只能用于非特定配置文件。这意味着它不能包含在特定于配置文件的文件或由 spring.config.activate.on-profile 激活的文件中。

如果某个配置文件处于活动状态,还可以使用下一节所述的配置文件组来添加活动配置文件。

配置文件组

在应用程序中定义和使用的配置文件有时过于细化,使用起来很麻烦。例如,您可能有 proddbprodmq 配置文件,用于独立启用数据库和消息功能。
为了解决这个问题,Spring Boot 允许您定义配置文件组。配置文件组允许您为相关的配置文件组定义一个逻辑名称。
例如,我们可以创建一个由 proddbprodmq 配置文件组成的生产组。

spring:profiles:group:production:- "proddb"- "prodmq"

现在,我们可以使用 --spring.profiles.active=production 来启动应用程序,从而一次性激活productionprodbprodmq 配置文件。

通过编程设置配置文件

您可以在应用程序运行前调用 SpringApplication.setAdditionalProfiles(...) 以编程方式设置激活的配置文件。也可以通过使用 Spring 的 ConfigurableEnvironment 接口来激活配置文件。

特定的配置文件

application.properties(或 application.yaml)和通过 @ConfigurationProperties 引用的文件的特定配置文件变体都被视为文件并加载。有关详情,请参阅 “配置文件特定文件”。