配置 文件
Spring Profiles 提供了一种方法,可以将应用配置的部分分隔开来,并使其仅在特定环境中可用。 任何@Component,@Configuration或@ConfigurationProperties可以标记为@Profile限制加载时间,如下例所示:
-
Java
-
Kotlin
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如下例所示:
-
Properties
-
YAML
spring.profiles.active=dev,hsqldb
spring:
profiles:
active: "dev,hsqldb"
你也可以在命令行中使用以下开关来指定:--spring.profiles.active=dev,hsqldb.
如果没有激活配置文件,则启用默认配置文件。
默认配置文件的名称为默认值并且可以通过以下方式进行调音spring.profiles.default 环境性质,如下例所示:
-
Properties
-
YAML
spring.profiles.default=none
spring:
profiles:
default: "none"
春季.档案.活跃和spring.profiles.default只能用于非特定档案的文档。
这意味着它们不能被包含在特定档案文件或由spring.config.activate.on-profile.
例如,第二个文档配置无效:
-
Properties
-
YAML
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 Boot 中的配置文件名称可能包含字母、数字或允许的字符(, , , 这一限制有助于防止常见的解析问题。
不过,如果你更喜欢更灵活的个人资料名称,也可以设置
|
添加活跃配置文件
有时,拥有能增加活跃配置文件的属性而非替代它们是有用的。
这春季.档案.包括属性可以用来在被激活的配置文件之上添加活跃配置文件春季.档案.活跃财产。
这SpringApplication入口点还支持设置额外配置文件的Java API。
参见setAdditionalProfiles()方法SpringApplication.
例如,当运行具有以下属性的应用程序时,即使运行于--春季.profiles.active。开关:
-
Properties
-
YAML
spring.profiles.include[0]=common
spring.profiles.include[1]=local
spring:
profiles:
include:
- "common"
- "local"
包含的配置文件会先添加春季.档案.活跃配置 文件。 |
这春季.档案.包括属性会针对每个属性源处理,因此列表通常的复杂类型合并规则不适用。 |
配置文件组(下节将介绍)也可用于添加活跃配置文件(如果某个配置文件处于激活状态)。
配置文件组
有时你在申请中定义和使用的配置文件过于细粒度,变得笨重,难以使用。
例如,你可能有PRODDB和prodmq这些配置文件是你用来独立启用数据库和消息功能的工具。
为了帮助实现这一点,Spring Boot 允许你定义配置文件组。 配置文件组允许你为相关一组配置文件定义一个逻辑名称。
例如,我们可以创建生产该群由我们的PRODDB和prodmq配置 文件。
-
Properties
-
YAML
spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq
spring:
profiles:
group:
production:
- "proddb"
- "prodmq"
我们的应用程序现在可以用以下方式启动--spring.profiles.active=production以激活生产,PRODDB和prodmq一击中了侧面。
程序化设置配置文件
你可以通过调用程序化设置活跃配置文件SpringApplication.setAdditionalProfiles(...)在你的申请运行之前。
也可以通过使用 Spring 的可配置环境接口。
配置文件专用配置文件
两者的专属变体application.properties(或application.yaml)以及通过以下方式引用的文件@ConfigurationProperties被视为文件并已加载。
详情请参见配置文件特定文件。