22.md 2.9 KB
Newer Older
W
mkdocs  
wizardforcel 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
# 25\. 配置文件(Profiles)

Spring 配置文件提供了将应用程序配置隔离的方法,使其仅在某些环境中可用。 任何@Component或@Configuration都可以使用@Profile进行标记,以限制其在什么时候加载:

```
@Configuration
@Profile("production")
public class ProductionConfiguration {

    // ...

}
```

一般,您可以使用spring.profiles.active Environment属性来指定哪些配置文件处于激活状态。 您可以以任何方式指定属性,例如,您可以将其包含在您的application.properties中:

```
spring.profiles.active=dev,hsqldb
```

或者使用命令行`--spring.profiles.active=dev,hsqldb`在命令行中指定。

### [](file:///C:/Users/geekidentity/AppData/Local/Youdao/YNote/markdown/index.html#251添加激活配置文件)25.1添加激活配置文件

spring.profiles.active属性遵循与其他属性相同的优先级规则,PropertySource最高。这意味着您可以在application.properties中指定活动配置文件,然后使用命令行开关替换它们。

有时,将特定于配置文件的属性添加到激活的配置文件而不是替换它们是有用的。 spring.profiles.include属性可用于无条件添加激活配置文件。 SpringApplication入口点还具有用于设置其他配置文件的Java API(即,在由spring.profiles.active属性激活的那些配置文件之上):请参阅setAdditionalProfiles()方法。

例如,当使用开关 -spring.profiles.active=prod 运行具有以下属性的应用程序时,proddb和prodmq配置文件也将被激活:

```
---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
  - proddb
  - prodmq
```

请记住,可以在YAML文档中定义spring.profiles属性,以确定此特定文档何时包含在配置中。 有关详细信息,请参见[第72.7节“根据环境更改配置”](http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#howto-change-configuration-depending-on-the-environment)。

### [](file:///C:/Users/geekidentity/AppData/Local/Youdao/YNote/markdown/index.html#252-以编程方式设置配置文件)25.2 以编程方式设置配置文件

您可以通过在应用程序运行之前调用SpringApplication.setAdditionalProfiles(...)以编程方式设置激活配置文件。 也可以使用Spring的ConfigurableEnvironment接口激活配置文件。

### [](file:///C:/Users/geekidentity/AppData/Local/Youdao/YNote/markdown/index.html#253-配置文件指定的配置文件)25.3 配置文件指定的配置文件

通过@ConfigurationProperties引用的application.properties(或application.yml)和文件的配置文件特定变体都被视为加载文件。 有关详细信息,请参见[第24.4节指定配置(Profile-specific)的属性”](http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-external-config-profile-specific-properties)。