Spring經常使用屬性的註入及屬性編輯器
阿新 • • 發佈:2017-06-11
edt 註入 nim jsm fin v2x avt ket jsf
對於對象的註入,我們使用ref方式,能夠指定註入的對象。以下看下對於基本類型的註入。以及當spring無法轉換基本類型進行註入時,怎樣編寫一個相似轉換器的東西來完畢註入。
一。基本類型的註入
以下寫一個簡單類。來看下spring中對於基本類型的註入:
<bean id="bean1" class="com.shuitian.spring.Bean1"> <!-- <property name="strValue" value="hello_spring"/> --><!-- 也能夠使用以下的方式 --> <!-- private String strValue --> <property name="strValue"> <value>hello_spring</value> </property> <!-- private int intValue; --> <property name="intValue" value="123"/> <!-- private List listValue; --> <property name="listValue"> <list> <value>list1</value> <value>list2</value> </list> </property> <!-- private Set setValue; --> <property name="setValue"> <set> <value>set1</value> <value>set2</value> </set> </property> <!-- private String[] arrayValues; --> <property name="arrayValues"> <list> <value>array1</value> <value>array2</value> </list> </property> <!-- private Map mapValue; --> <property name="mapValue"> <map> <entry key="k1" value="v1"/> <entry key="k2" value="v2"/> </map> </property> </bean>
二,屬性編輯器
在測試類中增加java.util.Date:
配置:
<property name="dateValue" value="2009-12-12"/>
假設像前面那樣配置dataValue,為他註入值。會由於string在轉換Date的時候spring無法識別util.Date而報錯,所以,我們要自定義一個類,來將假設轉換的這一過程寫下來。
/* * java.util.date屬性編輯器 */ public class UtilDatePropertyEditor extends PropertyEditorSupport{ private String pattern;//日期時間格式 public void setPattern(String pattern) { this.pattern = pattern; } @Override public void setAsText(String text) throws IllegalArgumentException { try { Date d=new SimpleDateFormat(pattern).parse(text); this.setValue(d);//設置轉換後的值 } catch (ParseException e) { e.printStackTrace(); } } }
註意要繼承PropertyEditorSupport類並實現setAsText方法。
轉換器的配置:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="customEditors" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <!-- 屬性編輯器要放到 CustomEditorConfigurer 類的 customEditors(Map類型)成員變量上面去 --> <property name="customEditors"> <map> <entry key="java.util.Date"> <!-- 內部bean,僅僅內部使用 --> <bean class="com.shuitian.spring.UtilDatePropertyEditor"> <!-- 註入日期時間格式 --> <property name="pattern" value="yyyy-MM-dd"/> </bean> </entry> </map> </property> </bean> <!-- 不想通過外界訪問到 --> <!-- <bean id="utilDatePropertyEditor" class="com.shuitian.spring.UtilDatePropertyEditor"> </bean> --> </beans>
add進spring的源代碼,圍觀下:
這一配置的原因就是,我們要將自定義的屬性編輯器,放到CustomEditorConfigurer 它的customEditors裏面,這樣spring才幹使用到它。
Spring經常使用屬性的註入及屬性編輯器