25、Profile
Spring Profile 提供了一种应用程序配置部分隔离并使其仅在特定环境中可用的方法。可以使用 @Profile
来注解任何 @Component
或 @Configuration
以指定何时加载它,如下所示:
@Configuration
@Profile("production")
public class ProductionConfiguration {
// ...
}
您可以使用 spring.profiles.active
Environment
属性指定哪些配置文件处于激活状态。您可以使用本章前面介绍的任何方法指定属性。例如,您可以将其包含在 application.properties
中,如下所示:
spring.profiles.active=dev,hsqldb
您还可以在命令行上使用以下开关指定它:--spring.profiles.active=dev,hsqldb
。
25.1、添加激活 Profile
spring.profiles.active
属性遵循与其他属性相同的排序规则:应用优先级最高的 PropertySource
。这意味着您可以在 application.properties
中指定激活配置文件,然后使用命令行开关替换它们。
有时,将特定 profile 的属性添加到激活配置文件而不是替换它们,这种方式也是很有用的。spring.profiles.include
属性可无条件地添加激活配置文件。SpringApplication
入口还有一个 Java API,用于设置其他 profile(即,在 spring.profiles.active
属性激活的 profile 之上)。请参阅SpringApplication 中的 setAdditionalProfiles()
方法。
例如,当使用开关 --spring.profiles.active=prod
运行有以下属性的应用程序时,proddb
和 prodmq
配置文件也会被激活:
---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
- proddb
- prodmq
注意
请记住,可以在 YAML 文档中定义
spring.profiles
属性,以确定此特定文档何时包含在配置中。有关更多详细信息,请参见第 77.7 章节:根据环境更改配置。
25.2、以编程方式设置 Profile
您可以在应用程序运行之前以编程方式通过调用 SpringApplication.setAdditionalProfiles(...)
设置激活 profile。也可以使用 Spring 的 ConfigurableEnvironment
接口激活 profile。
25.3、特定 Profile 的配置文件
特定 profile 的 application.properties
(或 application.yml
)和通过 @ConfigurationProperties
引用的文件被当做文件并加载。有关详细信息,请参见第 24.4 章节:特定 Profile 的属性文件。