我正在尝试在运行时设置我的Spring Boot(1.5.4.RELEASE)应用程序的环境,但看起来我有一些不协调的东西。
我的application.yml定义如下:
spring:
profiles.active: ${env:local}
---
spring:
profiles: local
foo: bar
---
spring:
profiles: dev
foo: bar
在我注释为@Configuration的类中,我有一个方法可以执行以下操作,因此我可以显示正在使用的环境:
@Value('${spring.profiles.active}')
String activeProfile
@PostConstruct
def bootComplete() {
println "App started with profile: $activeProfile"
}
在这种配置下,当我的应用程序启动时,我在控制台中看到了这一点:
App started with profile: local
如果我在application.yml中将 $ {env:local} 修改为 $ {env:dev} ,我启动应用程序,我会在控制台:
App started with profile: dev
我的目标是使用VM参数启动应用程序,以便在运行时设置活动配置文件。我正在添加参数: -Denv = dev 但似乎它对应用程序的启动没有影响。任何人都可以建议我在这里可以忽略的东西吗?
答案 0 :(得分:1)
我找到了解决问题的方法。问题是我正在使用Gradle bootRun启动应用程序。我的假设是那里设置的VM args会被使用。我现在通过直接调用该类来运行应用程序,并且VM args正在运行(-Denv和-Dspring.profiles.active)
答案 1 :(得分:0)
执行-Denv=env
不会产生任何影响,因为env
不是属性键。
这就是你如何做到的:
-Dspring.profiles.active=dev