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 © 啥都写点