1、 spring的普通屬性注入
參見:spring文檔3.3章節
當有日期的時候 : private Data d;
轉換不了,報錯,需要自己編寫屬性編輯器
例:
import java.beans.PropertyEditorSupport;
public class UtilDatePropertyEditor extends PropertyEditorSupport {
private String format="yyyy-mm-dd";
//復寫setAsText方法
publicvoid setAsText(String arg0) throws IllegalArgumentException {
System.out.println("UtilDataPropertyEditor.saveAsText()--text"+arg0);
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
Date d = sdf.parse(arg0);
this.setValue(d);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//寫完后需要注冊,配置在SPRING配置文件中(注入)
<bean id="customEditorConfigurer" class="org.springframework.bean.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="com.bjsxt.spring.UtilDatePropertEditor">
<!--
<property name=”format” value=”yyyy/mm/dd” />
-->
</bean>
</entry>
</map>
</property>
<bean id="utilDatePropertyEditor" class="com.bjsxt.spring.UtilDatePropertEditor"></bean>
什么是屬性編輯器,作用:
*自定義屬性編輯器,spring配置文件中的字符串轉換成相應的對象進行注入
Spring已經有內置的屬性編輯器,我們可以根據需求自己定義屬性編輯器
*如何定義屬性編輯器?
*集成PropertyEditorSupport類,覆寫setAsText()方法,參見:UtilDatePropertyEditor.java
*將屬性編輯器注冊到spring中,參見:applicationContext-editor.xml
依賴對象的注入方式,可以采用:
* ref屬性
* <ref>標簽
*內部<bean>來定義
Spring提供的其他定制編輯器包括: ClassEditor—使用包含全稱類名的字符串設置java.lang. Class的屬性。 CustomDateEditor—使用某種 java.text.DateFomat 對 象將一個字符串設置給 java.util.Date 屬性。 FileEditor—使用包含文件路徑的字符串設置java.io.File 的屬性。 StringArrayPropertyEditor—將一個包含逗號的String 轉換成String數組屬性。 StringTrimmerEditor—自動修正字符串屬性,可以選 擇將空字符轉變成null。 一個屬性編輯器的簡單示例: Contact類:
PhoneNumber類:
編輯器類:
applicationContext.xml中的配置
測試類代碼:
如何將公共的注入定義描述出來?
*通過<bean>標簽定義公共的屬性,指定abstract=true
*具有相同屬性的類在<bean>標簽中指定其parent屬性
參加:applicationContext-other.xml
<bean id="beanAbstract" abstract="true">
<property name="id" value=""/>
<property name="name" value=""/>
<bean id="bean3" class="" parent="beanAbstract">
<property name="password">
<value></value>
<bean id="" class="" parent="beanAbstract"/>
-- 學海無涯
Powered by: BlogJava Copyright © 啥都寫點