此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.4! |
此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.4! |
Spring 配置文件提供了一种分离应用程序配置的各个部分并使其仅在某些环境中可用的方法。
Any ,或者可以标记为 to limit 何时加载,如以下示例所示:@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 {
// ...
}
如果 bean 是通过而不是自动扫描注册的,则需要在具有 Comments 的类上指定 Comments。
在 被扫描的情况下,可以在类本身上指定。@ConfigurationProperties @EnableConfigurationProperties @Profile @Configuration @EnableConfigurationProperties @ConfigurationProperties @Profile @ConfigurationProperties |
您可以使用属性来指定哪些配置文件处于活动状态。
您可以使用本章前面介绍的任何方式指定属性。
例如,您可以将其包含在 中,如以下示例所示:spring.profiles.active
Environment
application.properties
-
Properties
-
YAML
spring.profiles.active=dev,hsqldb
spring:
profiles:
active: "dev,hsqldb"
您还可以使用以下开关在命令行中指定它:。--spring.profiles.active=dev,hsqldb
如果没有配置文件处于活动状态,则启用默认配置文件。
默认配置文件的名称是 ,并且可以使用 property 进行调整,如以下示例所示:default
spring.profiles.default
Environment
-
Properties
-
YAML
spring.profiles.default=none
spring:
profiles:
default: "none"
spring.profiles.active
,并且只能在非特定于配置文件的文档中使用。
这意味着它们不能包含在特定于配置文件的文件或 由 激活的文档中。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"
如果 bean 是通过而不是自动扫描注册的,则需要在具有 Comments 的类上指定 Comments。
在 被扫描的情况下,可以在类本身上指定。@ConfigurationProperties @EnableConfigurationProperties @Profile @Configuration @EnableConfigurationProperties @ConfigurationProperties @Profile @ConfigurationProperties |
添加活动配置文件
该属性遵循与其他属性相同的排序规则:最高者优先。
这意味着您可以在 中指定活动配置文件,然后使用命令行开关替换它们。spring.profiles.active
PropertySource
application.properties
有时,将属性添加到活动配置文件中而不是替换它们非常有用。
该属性可用于在由该属性激活的用户档案之上添加活动用户档案。
入口点还具有用于设置其他配置文件的 Java API。
请参阅 中的方法。spring.profiles.include
spring.profiles.active
SpringApplication
setAdditionalProfiles()
SpringApplication
例如,当运行具有以下属性的应用程序时,即使它使用开关运行时,也会激活通用配置文件和本地配置文件:--spring.profiles.active
-
Properties
-
YAML
spring.profiles.include[0]=common
spring.profiles.include[1]=local
spring:
profiles:
include:
- "common"
- "local"
与 类似,只能在非配置文件特定的文档中使用。
这意味着它不能包含在由 激活的特定于配置文件的文件或文档中。spring.profiles.active spring.profiles.include spring.config.activate.on-profile |
如果给定配置文件处于活动状态,则下一节中介绍的配置文件组也可用于添加活动配置文件。
与 类似,只能在非配置文件特定的文档中使用。
这意味着它不能包含在由 激活的特定于配置文件的文件或文档中。spring.profiles.active spring.profiles.include spring.config.activate.on-profile |
配置文件组
有时,您在应用程序中定义和使用的配置文件过于精细,使用起来变得很麻烦。
例如,您可能拥有用于独立启用数据库和消息传递功能的 and 配置文件。proddb
prodmq
为了帮助解决这个问题, Spring Boot 允许你定义配置文件组。 配置文件组允许您为相关的配置文件组定义逻辑名称。
例如,我们可以创建一个由 our 和 profiles 组成的组。production
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
production
proddb
prodmq
与 和 类似,只能在非配置文件特定的文档中使用。
这意味着它不能包含在由 激活的特定于配置文件的文件或文档中。spring.profiles.active spring.profiles.include spring.profiles.group spring.config.activate.on-profile |
与 和 类似,只能在非配置文件特定的文档中使用。
这意味着它不能包含在由 激活的特定于配置文件的文件或文档中。spring.profiles.active spring.profiles.include spring.profiles.group spring.config.activate.on-profile |
以编程方式设置配置文件
您可以通过在应用程序运行之前调用 来以编程方式设置活动配置文件。
也可以使用 Spring 的界面激活配置文件。SpringApplication.setAdditionalProfiles(…)
ConfigurableEnvironment
特定于配置文件的配置文件
通过 (或 ) 引用的文件的特定于配置文件的变体被视为文件并加载。
有关详细信息,请参阅分析特定文件。application.properties
application.yaml
@ConfigurationProperties