首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring bean 日期格式流入的几种模式

2012-09-02 
spring bean 日期格式注入的几种模式1 当我们进行bean注入到spring当中的时候,这个bean当中可能会存在着一

spring bean 日期格式注入的几种模式

1 当我们进行bean注入到spring当中的时候,这个bean当中可能会存在着一些特殊类型的数据元素,如Date类型,当我们不进行一些特殊处理的时候,想直接给其赋值就会报告错误。

我们定义了如下类

package com.japie.customproperty;import java.util.Date;/** * 自定义属性配置 * @author Japie * 下午06:15:04 */public class BoyMan {private Date birthDay;private String username;public BoyMan() {}public Date getBirthDay() {return birthDay;}public void setBirthDay(Date birthDay) {this.birthDay = birthDay;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}@Overridepublic String toString(){return "BoyMan:["+username+this.birthDay+"]";}public static void main(String[] args) {}}

?配置文件为

<bean id="boyMan" value="2011-06-17"><property name="username" value="japie"/></bean>

?当进行测试的时候报告如下的错误。

Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property 'birthDay';

?2 那么如何解决上面的问题呢,有如下几种方法供参考

Declare a dateFormat bean, in “customer” bean, reference “dateFormat” bean as a factory bean. The factory method will call SimpleDateFormat.parse() to convert String into Date object automatically.

?

??? 1) 定义一个dateFormat bean,而后通而后通过工程模式在boyman这个类当中用构造器的模式进行引用,其实就是调用SimpleDateFormat.parse() 的方法,配置文件如下

<bean id="boyMan" factory-method="parse"> <constructor-arg value="2011-06-17" /> </bean></property><property name="username" value="japie"/></bean>

?如此就可以进行正常的赋值了。

2)自定义日期熟悉编辑器

?

<bean id="dateEditor"/></bean></constructor-arg><constructor-arg value="true" /></bean>

3』通过重写spring的熟悉方法来实现代码如下

?

package com.japie.injection;import java.beans.PropertyEditorSupport;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;/** * java.util.Date属性编辑器 * @author japie * */public class UtilDatePropertyEditor extends PropertyEditorSupport {private String pattern;@Overridepublic 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) {e.printStackTrace();throw new IllegalArgumentException(text);}}public void setPattern(String pattern) {this.pattern = pattern;}}
?

以及在我们具体的bean当中引用其的配置

?

<bean id="boyMan" value="2011-06-17" /><property name="username" value="japie"/></bean>

热点排行