2017-08-29 78 views
1

我正在使用屬性文件配置我的spring應用程序。但我必須在開發和生產屬性文件之間進行切換。現在我有這樣的代碼片段設置屬性位置環境

@Configuration 
@PropertySource(value = "classpath:config/simulator.properties", ignoreResourceNotFound = false) 
public class AppConfiguration 

但我想的東西與價值=「類路徑:$ {ENV:本地} /simulator.properties」

它,如果我沒有設置環境變量ENV不是指它必須指向local/simulator.properties,否則如果environment env變量指向生產,那麼位置必須是production/simulator.properties。

因此,本地是後備環境。

有什麼辦法來實現這一目標。我不想使用配置文件,它必須由變量的環境中控制

我不想

+0

你真的嘗試過嗎? –

回答

0

Spring自動設置配置文件的-D選項

感謝

約翰看從系統根路徑,如果我們有Windows然後c:/將被春天自動理解,如果我們有Linux機器,那麼/將是根。 所以在這裏我們不需要設置類路徑或-D標籤。

1

如果找到第一個文件和第二個文件,那麼可以使用多個@PropertySource註釋,並且兩個文件中的鍵匹配,然後將採用後面的一個。請看看here

@PropertySource(value="classpath:local/simulator.properties",ignoreResourceNotFound=true) 
@PropertySource(value="classpath:${env.production}/simulator.properties",ignoreResourceNotFound=true) 
0

其實在我的測試(單元測試4)我用註釋:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"classpath:com/myTest/MyTestApplicationContext.xml"}) 

這可以讓你對每個測試和獨立的一個發展一個單獨的應用程序上下文環境。那麼當然,在每個應用程序上下文中,您可以配置要從不同位置讀取的屬性。非常適合我