读书人

Spring日期部类注入

发布时间: 2012-09-02 21:00:34 作者: rapoo

Spring日期类型注入

利用属性编辑器完成Spring日期类型的注入

ApplicationContext.xml注入配置如下:

?

<bean id="bin" class="com.apj.client.Bin">

??? ??? <property name="strValue" value="FredKing" />

??? ??? <property name="dateValue" value="2011-01-09" />

??? ?</bean>

?

下面的日期类型注入后读取出现类型转换错误,以下是jUnit的测试类:

import org.springframework.beans.factory.BeanFactory;

import org.springframework.context.support.ClassPathXmlApplicationContext;

?

import junit.framework.TestCase;

?

public class SpringUnitTest extends TestCase {

??? private BeanFactory factory;

??? @Override

??? protected void setUp() throws Exception {

?????? factory = new ClassPathXmlApplicationContext("applicationContext.xml");

?????? super.setUp();

??? }

??? public void testSpring(){

?????? System.out.println("bin.strValue:"+((Bin)factory.getBean("bin")).getStrValue());

?????? System.out.println("bin.dateValue:"+((Bin)factory.getBean("bin")).getDateValue());

??? }

}

下面是Bin类:

import java.util.Date;

?

public class Bin {

??? private String strValue;

??? private Date dateValue;

??? public String getStrValue() {

?????? return strValue;

??? }

??? public void setStrValue(String strValue) {

?????? this.strValue = strValue;

??? }

??? public Date getDateValue() {

?????? return dateValue;

??? }

??? public void setDateValue(Date dateValue) {

?????? this.dateValue = dateValue;

??? }

???

}

?

需要创建一个属性编辑器类继承PropertyEditorSupport:

import java.beans.PropertyEditorSupport;

import java.text.ParseException;

import java.text.SimpleDateFormat;

?

?

public class DatePropertyEditer extends PropertyEditorSupport {

??? private String format = "yyyy-MM-dd";

??? @Override

??? public void setAsText(String text) throws IllegalArgumentException {

?????? SimpleDateFormat sdf = new SimpleDateFormat(format);

?????? try {

?????????? this.setValue(sdf.parse(text));

?????? } catch (ParseException e) {

??????????

?????????? e.printStackTrace();

?????? }?????

??? }

???

?

}

重写setAsText方法,将setValue方法设置格式化后的值。

最后配置一下ApplicationContext.xml如下

<bean id="customDateEditor" class="org.springframework.beans.factory.config.CustomEditorConfigurer">

??? ??? <property name="customEditors">

??? ?????? <map>

??? ?????????? <entry key="java.util.Date">

??? ????????????? <bean class="com.apj.client.DatePropertyEditer" />

??? ?????????? </entry>

??? ?????? </map>

??? ??? </property>

??? ?</bean>

?

如果需要把format一并注入,只需修改为以下配置即可:

<bean id="customDateEditor" class="org.springframework.beans.factory.config.CustomEditorConfigurer">

??? ??? <property name="customEditors">

??? ?????? <map>

??? ?????????? <entry key="java.util.Date">

??? ????????????? <bean class="com.apj.client.DatePropertyEditer" >

??? ????????????????? <property name="format" value="yyyy/MM/dd" />

??? ????????????? </bean>

??? ?????????? </entry>

??? ?????? </map>

??? ??? </property>

??? ?</bean>

同时由于是setter注入,需要在DatePropertyEditer类中加入setFormat方法。

读书人网 >软件架构设计

热点推荐