1. 程式人生 > >理解Could not resolve placeholder——XML引入配置檔案錯誤

理解Could not resolve placeholder——XML引入配置檔案錯誤

引入配置檔案錯誤,首先確保properties檔案內和xml中引用的對映沒問題,這個應該都不是問題。

那麼看著完全沒有問題,還是丟擲Could not resolve placeholder,是為什麼?

xml中能使用例如${xxx}作為佔位符,是因為你使用了<context:property-placeholder location="/xxx/XXX.properties"/>,而這個配置其實幫你建立了一個org.springframework.beans.factory.config.PropertySourcesPlaceholderConfigurer的bean,當程式載入到

context:property-placeholder時,會掃描所有的bean,然後適配,但是如果你專案中引入了多個資原始檔,那麼勢必在第一次掃描所有bean的時候會有不適配的情況發生,好比我現在扛著一袋子蘿蔔去找坑種,一個蘿蔔一個坑,第一袋蘿蔔找一遍所有的坑,把我袋子裡的蘿蔔扔進坑裡,但是發現還有很多坑,而我的袋子裡沒有這些坑的蘿蔔,這些蘿蔔在另外一個袋子裡,而我此時不知道,以為自己多挖了很多坑,想報警。

解決方法:

加入ignore-unresolvable="true"配置,例如

<context:property-placeholder location="classpath:dubbo-service-producter.properties" ignore-unresolvable="true"/>

這個配置是告訴spring,當你找不到蘿蔔坑又多出來,想丟擲Could not resolve placeholder時,小老弟你先等等,先檢查一下別的袋子裡有沒有蘿蔔。ignore-unresolvable="true"的作用就是沒找到蘿蔔的時候,先用${}替代,空的,等等找到這個坑的蘿蔔了再填進去。

所以,按照邏輯,ignore-unresolvable="true"這個配置是要新增在先載入的xml中,因為你要告訴的是他,沒有蘿蔔先彆著急。