在我们注入属性时,遇到是日期类型,如果按普通属性去注入,则会报错,那我们该怎么解决?解决办法:自定义属性编辑器。
什么是属性编辑器,作用?
自定义属性编辑器,spring配置文件中的字符串转换成相应的对象进行注入spring已经有内置的属性编辑器,我们可以根据需求自己定义属性编辑器。
步骤:
1、 定义一个属性编辑器必须继承java.beans.PropertyEditorSupport
2、 在配置文件配置上我们定义的属性编辑器
下面我们来做一个java.util.Date属性编辑器,代码如下:
定义一个属性编辑器UtilDatePropertyEditor: /** * java.util.Date属性编辑器 */ public class UtilDatePropertyEditor extends PropertyEditorSupport { private String format="yyyy-MM-dd"; @Override public void setAsText(String text) throws IllegalArgumentException { SimpleDateFormat sdf = new SimpleDateFormat(format); try { Date d = sdf.parse(text); this.setValue(d); } catch (ParseException e) { e.printStackTrace(); } }
public void setFormat(String format) { this.format = format; } } 配置文件applicationContext.xml <!-- 定义属性编辑器 --> <bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> <property name="customEditors"> <map> <entry key="java.util.Date"> <bean class="spring.UtilDatePropertyEditor"> <property name="format" value="yyyy-MM-dd"/> </bean> </entry> </map> </property> </bean> |
以后我们就可以为java.util.Date进行注入,和普通属性一样使用,测试代码(略),
测试代码可以参考我上篇文章《普通属性注入》,http://blog.youkuaiyun.com/xiaoping8411/archive/2010/01/04/5128237.aspx