Profile篇

Spring配置文件提供了一种隔离应用程序配置的方法,使其仅在特定环境中可用。任何@Component@Configuration@ConfigurationProperties都可以标记为@Profile

配置特定文件

除了应用程序属性文件外,Spring Boot还会尝试使用命名约定的application-{profile}加载特定于配置文件的文件。例如,如果您的应用程序激活了名为prod的配置文件并使用YAML文件,那么application.yamlapplication-prod.yaml都将被考虑。

激活特定文件

配置特定文件属性的加载位置与标准application.properties相同,特定文件总是优先于非特定文件。如果指定了多个特定文件,则采用后胜策略。例如,如果通过spring.profiles.active属性指定了配置文件prodliveapplication-prod.properties中的值就会被application-live.properties中的值覆盖。

  • 命令行参数激活
[home$] java -jar my-application.jar --spring.profiles.active=dev
  • 应用程序属性文件激活
#application.properties

spring.profiles.active=dev
  • 环境变量激活
[home$] export SPRING_PROFILES_ACTIVE=dev
  • JVM系统属性激活

[home$] java -jar -Dspring.profiles.active=dev my-application.jar
  • Web应用程序上下文参数激活

web.xml文件中填写上下文参数。

<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>dev</param-value>
</context-param>

激活特定Bean


@Configuration
@Profile("dev")
public class DevelopmentConfiguration {
    // Development-specific configurations
}

@Configuration
@Profile("prod")
public class ProdConfiguration {
    // Prod-specific configurations
}

@Component
@Profile("dev")
public class DevelopmentComponent {
    // Development-specific component
}