Spring 配置文件提供了一种分离应用程序配置的各个部分并使其仅在某些环境中可用的方法。
任何@Component,@Configuration或@ConfigurationProperties可以标有@Profile限制加载时间,如以下示例所示:spring-doc.cadn.net.cn
Javaspring-doc.cadn.net.cn
Kotlinspring-doc.cadn.net.cn
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration(proxyBeanMethods = false)
@Profile("production")
public class ProductionConfiguration {
// ...
}
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Profile
@Configuration(proxyBeanMethods = false)
@Profile("production")
class ProductionConfiguration {
// ...
}
如果@ConfigurationPropertiesbean 通过@EnableConfigurationProperties不是自动扫描,而是@Profileannotation 需要在@Configuration类中具有@EnableConfigurationProperties注解。
在以下情况下@ConfigurationProperties被扫描,@Profile可以在@ConfigurationProperties类本身。
您可以使用spring.profiles.active Environment属性以指定哪些配置文件处于活动状态。
您可以使用本章前面介绍的任何方式指定属性。
例如,您可以将其包含在application.properties,如以下示例所示:spring-doc.cadn.net.cn
Propertiesspring-doc.cadn.net.cn
YAMLspring-doc.cadn.net.cn
spring.profiles.active=dev,hsqldb
spring:
profiles:
active: "dev,hsqldb"
您还可以使用以下开关在命令行上指定它:--spring.profiles.active=dev,hsqldb.spring-doc.cadn.net.cn
如果没有配置文件处于活动状态,则启用默认配置文件。
默认配置文件的名称为default并且可以使用spring.profiles.default Environment属性,如以下示例所示:spring-doc.cadn.net.cn
Propertiesspring-doc.cadn.net.cn
YAMLspring-doc.cadn.net.cn
spring.profiles.default=none
spring:
profiles:
default: "none"
spring.profiles.active和spring.profiles.default只能在非配置文件特定的文档中使用。
这意味着它们不能包含在由 spring.config.activate.on-profile.spring-doc.cadn.net.cn
例如,第二个文档配置无效:spring-doc.cadn.net.cn
Propertiesspring-doc.cadn.net.cn
YAMLspring-doc.cadn.net.cn
spring.profiles.active=prod
#---
spring.config.activate.on-profile=prod
spring.profiles.active=metrics
# this document is valid
spring:
profiles:
active: "prod"
---
# this document is invalid
spring:
config:
activate:
on-profile: "prod"
profiles:
active: "metrics"