Spring2.0-applicationContext.xml中使用el表達式給實體類屬性賦值被當成字符串-遁地龍卷風


(-1)寫在前面

這兩天讀《javaweb開發王者歸來》,學到Spring的PropertyPlaceholderConfigurer時出現一個問題,我已${jdbc.name}的形式賦值給bean中的屬性,用main方法測試后,輸出屬性的值仍然是${jdbc.name}。

(0)解決問題之路

a.我先想到是不是打錯了,於是和書上仔細的對照了一下,發現書上說的是PropertyOverrideConfigurer,但實際上配置文件中寫的是PropertyPlaceholderConfigurer,換來換去幾次沒用。

b.問了老師,在老師回去看資料的一瞬間突然有了靈感,我百度了一下,覺得找到了解決方案。

c.我想是不是沒導入jar包、spring版本低,導致el表達式無法解析,一開始還一個個判定,后來把能導入的都導了還是不行,

d.不斷的換描述方式去百度我的問題,晚上有人要走了,提前一起吃一頓飯,吃晚飯去打lol,又百度了一會沒有找到,於是在博問、問問上提問,到現在也沒收到回復,英雄聯盟輸了一晚上,中途還斷電了。

c.早上的時候想是不是main方法測試的原因,把項目部署到tomcat,在index.jsp中使用還是那樣,於是乎我想到了是不是使用方式不對呢,之前也想到過PropertyPlaceholderConfigurer的bean是怎么和使用${jdbc.name}的bean關聯到一起的,於是開始百度PropertyPlaceholderConfigurer的使用方法,間接的找到了解決方案。

(1)具體解決方案

其實我覺得這個問題碰到的人真不多…,可能都是第一次學spring就讀了這本書的人吧..,下面是其中一種方式

配置文件

<bean  class="service.IDaoImp" id="iDaoImp" >

      <property name="name" value="${jdbc.name}"></property>

</bean>

<bean id="property" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  

   <property name="location">    

      <value>classpath:jdbc.properties</value>  

   </property>  

  </bean>

main方法

XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));

PropertyPlaceholderConfigurer propertyPostProcessor = (PropertyPlaceholderConfigurer)beanFactory.getBean("property");

propertyPostProcessor.postProcessBeanFactory(beanFactory);          

   IDaoImp  imp = (IDaoImp)beanFactory.getBean("iDaoImp");

  System.out.println(imp.getName());

IDaoImp

public class IDaoImp

{

      private String name;

 

      public String getName() {

           return name;

      }

 

      public void setName(String name) {

           this.name = name;

      }

     

}

jdbc.properties

jdbc.name=\u738B\u65ED

jdbc.age=21


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM