1. 程式人生 > >【轉】Spring項目啟動報"Could not resolve placeholder"解決方法

【轉】Spring項目啟動報"Could not resolve placeholder"解決方法

web 啟動 not res org 文件 rop 出現 沒有

問題的起因:

  除去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" />

<context:property-placeholder location="yyy.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"解決方法