Spring Profiles 提供了一种隔离应用程序配置部分并使其仅在特定环境中可用的方法。可以使用 @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
。
spring.profiles.active
属性遵循与其他属性相同的排序规则:最高的 PropertySource
获胜。这意味着您可以在 application.properties
中指定活动配置文件,然后使用命令行开关替换它们。
有时,将特定于配置文件的属性添加到活动配置文件而不是替换它们是有用的。spring.profiles.include
属性可用于无条件地添加活动配置文件。 SpringApplication
入口点还有一个 JavaAPI
,用于设置其他配置文件(即,在 spring.profiles.active
属性激活的配置文件之上)。请参阅 SpringApplication
中的 setAdditionalProfiles()
方法。
例如,当使用开关 --spring.profiles.active=prod
运行具有以下属性的应用程序时,proddb
和 prodmq
配置文件也会被激活:
---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
- proddb
- prodmq
☀️ 请记住,可以在YAML文档中定义spring.profiles属性,以确定此特定文档何时包含在配置中。有关更多详细信息,请参见第74.7节 “根据环境更改配置”。
您可以在应用程序运行之前通过调用 SpringApplication.setAdditionalProfiles(...)
以编程方式设置活动配置文件。也可以使用 Spring
的 ConfigurableEnvironment
接口激活配置文件。
application.properties
(或 application.yml
)的特定于配置文件的变体和通过 @ConfigurationProperties
引用的文件被视为文件并已加载。有关详细信息,请参见第24.4节 “特定于配置文件的属性”。