配置 文件

Spring Profiles 提供了一种方法,可以将应用配置的部分分隔开来,并使其仅在特定环境中可用。 任何@Component,@Configuration@ConfigurationProperties可以标记为@Profile限制加载时间,如下例所示:spring-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 {

	// ...

}
如果@ConfigurationProperties豆子注册方式如下@EnableConfigurationProperties与其实现自动扫描,不如采用@Profile需要在@Configuration具有@EnableConfigurationProperties注解。 在@ConfigurationProperties被扫描,@Profile可以指定为@ConfigurationProperties课程本身。

你可以用春季.档案.活跃 环境属性用来指定哪些配置文件处于激活状态。 你可以用本章前面描述的任何方式来指定该性质。 例如,你可以在你的application.properties如下例所示:spring-doc.cadn.net.cn

spring.profiles.active=dev,hsqldb
spring:
  profiles:
    active: "dev,hsqldb"

你也可以在命令行中使用以下开关来指定:--spring.profiles.active=dev,hsqldb.spring-doc.cadn.net.cn

如果没有激活配置文件,则启用默认配置文件。 默认配置文件的名称为默认值并且可以通过以下方式进行调音spring.profiles.default 环境性质,如下例所示:spring-doc.cadn.net.cn

spring.profiles.default=none
spring:
  profiles:
    default: "none"

春季.档案.活跃spring.profiles.default只能用于非特定档案的文档。 这意味着它们不能被包含在特定档案文件spring.config.activate.on-profile.spring-doc.cadn.net.cn

例如,第二个文档配置无效:spring-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"

春季.档案.活跃属性遵循与其他属性相同的排序规则。 最高地产来源赢了。 这意味着你可以在application.properties然后用命令行开关替换它们。spring-doc.cadn.net.cn

有关考虑属性源的顺序,请参见“外部化配置”一章

默认情况下,Spring Boot 中的配置文件名称可能包含字母、数字或允许的字符(, , ,-_., , ). 此外,它们只能以字母或数字开头和结尾。+@spring-doc.cadn.net.cn

这一限制有助于防止常见的解析问题。 不过,如果你更喜欢更灵活的个人资料名称,也可以设置春季.profiles.validatefalse在你的application.propertiesapplication.yaml文件:spring-doc.cadn.net.cn

spring.profiles.validate=false
spring:
  profiles:
    validate: false

添加活跃配置文件

有时,拥有能增加活跃配置文件的属性而非替代它们是有用的。 这春季.档案.包括属性可以用来在被激活的配置文件之上添加活跃配置文件春季.档案.活跃财产。 这SpringApplication入口点还支持设置额外配置文件的Java API。 参见setAdditionalProfiles()方法SpringApplication.spring-doc.cadn.net.cn

例如,当运行具有以下属性的应用程序时,即使运行于--春季.profiles.active。开关:spring-doc.cadn.net.cn

spring.profiles.include[0]=common
spring.profiles.include[1]=local
spring:
  profiles:
    include:
      - "common"
      - "local"
包含的配置文件会先添加春季.档案.活跃配置 文件。
春季.档案.包括属性会针对每个属性源处理,因此列表通常的复杂类型合并规则不适用。
春季.档案.活跃,春季.档案.包括只能用于非特定档案的文档。 这意味着它不能被包含在特定配置文件文件激活的文档中。spring.config.activate.on-profile.

配置文件组(下将介绍)也可用于添加活跃配置文件(如果某个配置文件处于激活状态)。spring-doc.cadn.net.cn

配置文件组

有时你在申请中定义和使用的配置文件过于细粒度,变得笨重,难以使用。 例如,你可能有PRODDBprodmq这些配置文件是你用来独立启用数据库和消息功能的工具。spring-doc.cadn.net.cn

为了帮助实现这一点,Spring Boot 允许你定义配置文件组。 配置文件组允许你为相关一组配置文件定义一个逻辑名称。spring-doc.cadn.net.cn

例如,我们可以创建生产该群由我们的PRODDBprodmq配置 文件。spring-doc.cadn.net.cn

spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq
spring:
  profiles:
    group:
      production:
      - "proddb"
      - "prodmq"

我们的应用程序现在可以用以下方式启动--spring.profiles.active=production以激活生产,PRODDBprodmq一击中了侧面。spring-doc.cadn.net.cn

春季.档案.活跃春季.档案.包括,春季档案组只能用于非特定档案的文档。 这意味着它不能被包含在特定配置文件文件激活的文档中。spring.config.activate.on-profile.

程序化设置配置文件

你可以通过调用程序化设置活跃配置文件SpringApplication.setAdditionalProfiles(...)在你的申请运行之前。 也可以通过使用 Spring 的可配置环境接口。spring-doc.cadn.net.cn

配置文件专用配置文件

两者的专属变体application.properties(或application.yaml)以及通过以下方式引用的文件@ConfigurationProperties被视为文件并已加载。 详情请参见配置文件特定文件spring-doc.cadn.net.cn