2013-04-23 28 views
1

我只是想知道,Maven資源過濾機制在什麼時候將配置文件中的值注入到目標文件中?我在問,因爲我的應用程序使用Spring,並且根據JVM屬性,它會調用我的應用程序環境文件之一,這些文件反過來用於在創建Spring bean時提供配置信息。Maven資源過濾 - 彈簧應用程序

我想將環境文件中的密碼和數據庫類型信息移動到Maven Settings.xml文件中但是我想知道Spring會覆蓋還是與Maven資源過濾的工作方式衝突?

目標是讓Spring決定應用程序運行的環境,並選擇一個已經具有Maven注入的必要值的環境文件。

謝謝

回答

4

Maven在流程資源階段取代佔位符。請參閱http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

因此,當spring開始創建它的上下文時,值就在那裏。

可以使用PropertyPlaceholderConfigurer讀取屬性文件,使他們在春天上下文中可用:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list> 
      <value>file://${config.dir}/external-config.properties</value> 
     </list> 
    </property> 
</bean> 

「config.dir」是在系統屬性:java的-Dconfig.dir =/DIR /或者我認爲它也可以是上下文參數。

可以使用屬性文件中的spring context $ {key}來配置bean。根據彈簧的版本,還可以提供註釋。或者也有PropertyResolver的命名空間。

所以maven過濾和彈簧很好地結合在一起。