2017-07-31 39 views
0

我想在運行時設置我的Spring Boot(1.5.4.RELEASE)應用程序的環境,但它似乎有一些不對齊。環境虛擬機參數傳遞給bootRun沒有被彈出引導應用程序

我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 

如果我修改$ {ENV:本地}$ {ENV:開發}在我application.yml我啓動應用程序,我看到這個控制檯:

App started with profile: dev 

我的目標是使用VM參數啓動應用程序以在運行時設置活動配置文件。我在添加參數:-Denv = dev但它似乎對應用程序的啓動沒有影響。任何人都可以提出我可能在這裏忽略的內容嗎

回答

0

-Denv=env不會產生任何影響,因爲env不是屬性鍵。 這是你如何做到這一點:

-Dspring.profiles.active=dev 
+0

感謝您的輸入。 Unfortunatley,我從-Dspring.profiles.active = dev開始,並且仍然將活動配置文件視爲本地。 –

1

我找到了解決我的問題。問題在於我使用Gradle bootRun啓動應用程序。我的假設是虛擬機參數設置在那裏會被使用。我現在通過直接調用該類來運行應用程序,並且虛擬機參數正在運行(均爲-Denv和-Dspring.profiles.active)