程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Spring2.0-applicationContext.xml中使用el表達式給實體類屬性賦值被當成字符串-遁地龍卷風,遁地龍卷風

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

編輯:JAVA綜合教程

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved