利用属性编辑器完成Spring日期类型的注入
ApplicationContext.xml注入配置如下:
下面的日期类型注入后读取出现类型转换错误,以下是jUnit的测试类:
需要创建一个属性编辑器类继承PropertyEditorSupport:
重写setAsText方法,将setValue方法设置格式化后的值。
最后配置一下ApplicationContext.xml如下
如果需要把format一并注入,只需修改为以下配置即可:
同时由于是setter注入,需要在DatePropertyEditer类中加入setFormat方法。
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方法。