2014-year☞fisrt☞spring☞PropertyPlaceholderConfigurer

         2014年的開篇文章,可能名字比較特殊。關於PropertyPlaceholderConfigurer這個類可能很多人都用過了,並且也不會出什麼問題。出了問題大概也都知道怎麼解決的。

無非就是Could not resolve placeholder 'xxx'這樣的錯誤。加個屬性ignoreUnresolvablePlaceholders=true。貌似這並沒有什麼的。可是昨天一同事遇到這個問題。我就一直在想這是爲什麼。於是跟了下源碼。

         發現這個問題的原因就是,當加載PropertyPlaceholderConfigurer這個類的時候,他會去掃描所以的類並初始化每個類被佔位的(當然這裏默認的是${}這樣的佔位符)變量。當其發現了被佔位的變量,並且在本properties文件中沒有的屬性的時候,他就會報錯,如果你加上了忽略解決不了的佔位符的時候,他就會繼續,並且不會拋出異常。瞭解了原理之後,其實你可能還會想出一種解決的辦法,那就是其他的什麼*Context.xml中用到的PropertyPlaceholderConfigurer這個類可以換個佔位符就不會報錯了,例如加個這樣的屬性<property name="placeholderPrefix" value="@{"/>也不錯。

         可能我比較變態的執着,爲了這個問題,我下班回家還搞了好久,不知道爲什麼,每次如果遇到問題。我就一定要知道爲什麼會報錯,可能我解決不了,但我如果不知道原因,那我就會睡不着,甚至做夢也會想着這個問題。曾經有一次遇到一個問題,問了幾個大神都沒有解決,我當然也不曉得爲什麼,於是糾結了好久。突然的某一天晚上睡覺把問題給想通了。然後第二天去辦公室驗證了一下,果不其然的對了。

         2014年的第一篇文章,希望以後也會堅持這樣,哪怕就是每天解決一個問題,那也是進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章