一、Profiles
Spring Profiles提供了一种隔离应用程序配置部分并使之仅在某些环境中可用的方法。 可以使用@Profile标记任何@ Component,@ Configuration或@ConfigurationProperties,以限制其加载时机,如以下示例所示:
@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
。
1、添加激活的配置文件
spring.profiles.active
属性遵循与其他属性相同的排序规则:最高优先级的PropertySource
获胜。 这意味着您可以在application.properties
中指定激活的配置文件,然后在命令行参数中替换掉。
有时,将特定配置文件的属性添加到活动配置文件而不是替换它们是有用的。 spring.profiles.include
属性可用于无条件添加活动配置文件。 SpringApplication
入口点还有Java API用于设置其他配置文件(即,在由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
属性,来加载特定的配置文件。
2、通过程序设置配置文件
您可以在应用程序运行之前通过调用SpringApplication.setAdditionalProfiles(…)
以编程方式设置机号的配置文件。 也可以使用Spring的ConfigurableEnvironment
接口来激活配置文件
3、特定的配置文件
application.properties
(或application.yml
)和通过@ConfigurationProperties
引用的文件的特定配置文件都被认为已经加载。