* 将spring配置文件中的字符串转换成相应的java对象
* spring内置了一些属性编辑器,也可以自定义属性编辑器
比如说:日期怎么注入?每个国家的格式都不一样的嘛.
他这里跟struts的那个转换器是类似的,这里叫属性编辑器.自己的类继承自java.beans.PropertyEditorSupport在这里进行转换,setAsText方法要覆盖.并且要加入到一个map里面去,map的key是要转换的类型的全名称,value是我们自己写的转换器,用IOC容器即可进行配置,转换的时候就会去map里面去找有没有的.
如我的Bean1有个java.util.Date类型的属性,如何注入呢?
如果直接配置<property name="dateValue" value="2009年12月14日" />,那显然是错误的,容器他是不知道要把这个东西转换为java.util.Date类型的
写一个自定义的属性编辑器:
/**
* java.util.Date属性编辑器
* @author Administrator
*
*/
public class UtilDatePropertyEditor extends PropertyEditorSupport {
private String pattern;
@Override
public void setAsText(String text) throws IllegalArgumentException {
System.out.println("---UtilDatePropertyEditor.setAsText()--->" + text);
try {
Date date = new SimpleDateFormat(pattern).parse(text);
this.setValue(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new IllegalArgumentException(text);
}
}
public void setPattern(String pattern) {
this.pattern = pattern;
}
}
配置这个属性编辑器:把它配置到.CustomEditorConfigurer里去
<bean id="customEditors" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="com.bjpowernode.spring.UtilDatePropertyEditor">
<property name="pattern" value="yyyy年MM月dd日"/>
</bean>
</entry>
</map>
</property>
</bean>
可以查看.CustomEditorConfigurer的源码,他里面有个private Map customEditors;
并且 提供了public void setCustomEditors(Map customEditors) {
this.customEditors = customEditors;
}
属性编辑器就是被存放到这里的,我们是在IOC容器中对他进行依赖注入