文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡書
25. Profiles
Spring Profiles提供了一種隔離部分應(yīng)用配置的方式,并讓這些配置只在特定的環(huán)境生效。任何帶有@Profile標(biāo)記的@Component或@Configuration在加載時都會受限制:
@Configuration
@Profile("production")
public class ProductionConfiguration {
// ...
}
以正常的Spring方式,你可以使用spring.profiles.active Environment屬性來指定激活哪一個profiles。你可以在任何常見的方式指定這個屬性,例如你可以在你的application.properties中包含它:
spring.profiles.active=dev,hsqldb
或在命令行用--spring.profiles.active=dev,hsqldb指定。
25.1 添加激活的profiles
spring.profiles.active屬性與其它的屬性一樣遵循同樣的排序規(guī)則,最高的PropertySource優(yōu)先。這意味著你可以在application.properties指定激活的profiles,然后用命令行轉(zhuǎn)換替代它們。
例如,當(dāng)一個應(yīng)用具有以下屬性且運(yùn)行時使用--spring.profiles.active=prod轉(zhuǎn)換,proddb和prodmq profiles也將被激活:
---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
- proddb
- prodmq
記住可以在YAML文檔中定義
spring.profiles來決定在配置中包含特定的文檔。更多細(xì)節(jié)請看70.7小節(jié),“根據(jù)環(huán)境更改配置”。
25.2 以編程方式設(shè)置profiles
你可以在你的應(yīng)用運(yùn)行之前以編程的方式調(diào)用SpringApplication.setAdditionalProfiles(…?)來設(shè)置激活的profiles。也可以使用Spring的ConfigurableEnvironment接口來激活profiles。
25.3 指定profile的配置文件
application.properties(或application.yml)和通過@ConfigurationProperties引用的文件的特定profiles變種都被當(dāng)做文件進(jìn)行加載。更多細(xì)節(jié)請看24.4小節(jié),“Profile-specific properties”。