2

我正在开发一个 spring-boot 应用程序,在以下情况下我需要您的帮助。

我为每个环境都有属性文件,例如 application-dev.properties、application-prod.properties 等。我的应用程序是否可以通过使用 spring @Profile 注释来加载特定于环境的属性文件。

请帮忙。

4

2 回答 2

0

您根本不需要使用@Profiles注释。只需使用

@ConfigurationProperties(locations = "classpath:myapp-${environment.type}.properties")

并通过系统属性定义环境类型。例如通过命令行-Denvironment.type=dev

于 2015-12-21T12:17:26.777 回答
0

@Profile 不适用于加载环境特定的属性文件。它用于指定 bean 的配置文件。例如,

@Profile("dev")
@Component
class Foo {

}

这意味着Foo只有当活动配置文件包含dev. 或相反@Profile("!dev"),这意味着 bean 在dev不是活动配置文件时可用。

因此,对于加载环境特定的属性文件,因为它是spring-boot,您可以只指定活动配置文件。有几种方法可以指定活动配置文件。

  • 环境变量:SPRING_PROFILES_ACTIVE=dev,prod
  • 命令行参数:java -jar app.jar --spring.profiles.active=dev,prod
  • 以编程方式:SpringApplicationBuilder(...).properties("spring.profiles.active=dev,prod).run(...)
  • 默认 application.properties 或 yaml:spring.profiles.active:dev, prod
于 2020-02-04T07:57:42.970 回答