【轉】Spring項目啟動報"Could not resolve placeholder"解決方法
問題的起因:
除去properites文件路徑錯誤、拼寫錯誤外,出現"Could not resolve placeholder"很有可能是使用了多個PropertyPlaceholderConfigurer或者多個<context:property-placeholder>的原因。
比如我有一個dao.xml讀取dbConnect.properties,還有一個dfs.xml讀取dfsManager.properties,然後web.xml統一load這兩個xml文件,就導致該問題的出現。
解決方法:
(1)在Spring 3.0中,可以寫
Xml代碼
<context:property-placeholder location="xxx.properties" ignore-unresolvable="true" />
註意兩個都要加上ignore-unresolvable="true",一個加另一個不加也是不行的
(2)在Spring 2.5中,<context:property-placeholder>沒有ignore-unresolvable屬性,此時可以改用PropertyPlaceholderConfigurer。其實<context:property-placeholder location="xxx.properties" ignore-unresolvable="true" />與下面的配置是等價的
配置內容:
<bean id="隨便" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="xxx.properties" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
正因為如此,寫多個PropertyPlaceholderConfigurer不加ignoreUnresolvablePlaceholders屬性也是一樣會出"Could not resolve placeholder"。
雖然兩者是的等價的,但估計大家還是喜歡寫<context:property-placeholder>多一些,畢竟簡單一些嘛。所以如果是Spring 3.0,直接用解決方案(1)再簡單不過了;如果是Spring 2.5,需要費點力氣改寫成PropertyPlaceholderConfigurer
【轉】Spring項目啟動報"Could not resolve placeholder"解決方法