我正在开发一个 spring-boot 应用程序,在以下情况下我需要您的帮助。
我为每个环境都有属性文件,例如 application-dev.properties、application-prod.properties 等。我的应用程序是否可以通过使用 spring @Profile 注释来加载特定于环境的属性文件。
请帮忙。
我正在开发一个 spring-boot 应用程序,在以下情况下我需要您的帮助。
我为每个环境都有属性文件,例如 application-dev.properties、application-prod.properties 等。我的应用程序是否可以通过使用 spring @Profile 注释来加载特定于环境的属性文件。
请帮忙。
您根本不需要使用@Profiles
注释。只需使用
@ConfigurationProperties(locations = "classpath:myapp-${environment.type}.properties")
并通过系统属性定义环境类型。例如通过命令行-Denvironment.type=dev
。
@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(...)
spring.profiles.active:dev, prod