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方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值