2012-11-14 77 views
0

小問題。 我們使用Spring 3.1,並且似乎與值分隔符有關(默認值是)。屬性佔位符默認值分隔符

<context:property-placeholder ignore-resource-not-found="false" ignore-unresolvable="false" location="${app-conf-base-path:classpath:}environment/app-conf-${spring.profiles.active:test}.properties" /> 

我們根據maven環境配置文件篩選部署的屬性。如果未提供Maven環境配置文件,則所有環境屬性文件都將加載到戰爭中並放在類路徑中。 實際環境特定設置在運行時使用彈簧配置文件加載。給我們一個問題的部分是$ {app-conf-base-path:classpath:},因爲他似乎無法解決這個問題。我相信這是因爲使用最後一次出現的默認值分隔符來分隔佔位符。 爲什麼我們希望這是因爲我們希望他查看app-conf-base-path,除非未將其定義爲JVM參數。在那種情況下,他應該看看類路徑。

我想:

  • 佔位符配置者與價值分離器== '?'無濟於事。

任何人都有一個替代的想法?

回答

0

我通過確保外部配置文件在加載它的類加載器時添加到服務器的類路徑來解決問題。這樣我就不需要佔位符來指向一個file:// type location。 我向tomcat的setclasspath.sh添加了一個導出行,將外部文件添加到環境變量CLASSPATH中。