本文为官方文档直译版本。原文链接
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.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
引用的文件的特定配置文件变体都被视为文件并加载。有关详情,请参阅 “配置文件特定文件”。