Spring Profiles提供了一种方法来隔离你的应用程序配置的一部分,并使其仅在某些环境中可用。任何@Component,@Configuration或@ConfigurationProperties都可以用@Profile标记,以限制它的加载时机,如下面的例子所示。
@Configuration(proxyBeanMethods = false)
@Profile("production")
public class ProductionConfiguration {
// ...
}
如果@ConfigurationProperties Bean是通过@EnableConfigurationProperties注册的,而不是自动扫描,则需要在具有@EnableConfigurationProperties注解的@Configuration类上指定@Profile注解。在@ConfigurationProperties被扫描的情况下,@Profile可以在@ConfigurationProperties类本身指定。
你可以使用spring.profiles.active Environment属性来指定哪些配置文件是活动的active。你可以通过本章前面描述的任何方式来指定该属性。例如,你可以在你的application.properties中包含它。
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激活的文件中。
spring.profiles.active属性遵循与其他属性相同的排序规则。最高的PropertySource获胜。这意味着你可以在application.properties中指定active profile,然后透过命令开关替换它们。
有时,有一些属性可以添加到活动的配置文件中,而不是替换它们,这很有用。spring.profiles.include属性可用于在由spring.profiles.active属性激活的配置文件之上添加活动配置文件。SpringApplication入口点也有一个Java API用于设置额外的配置文件。