- java.util.Date在Spring中被当做简单类型,简单类型在注入的时候可以直接使用value属性或value标签来完成。
- 但是对于Date类型来说,采用value属性或value标签赋值的时候,对日期字符串的格式要求非常严格,必须是这种格式的:Mon Oct 10 14:30:26 CST 2022。其他格式是不会被识别的。
采用工厂方法模式以非简单类型的方式通过 FactoryBean 接口实例化,我们可以在工厂方法中创建Date对象,同时还可以对Date对象进行加工,从而创建我们需要格式的日期对象。
/**
* ClassName: DateFactoryBean
* Package: cw.spring.study.bean
* Description:
* DateFactoryBean 这是一个工厂Bean,
* 用于协助Spring创建Date对象
*/
public class DateFactoryBean implements FactoryBean<Date> {
private String dateStr; // 日期字符串(简单类型)
public void setDateStr(String dateStr) {
this.dateStr = dateStr;
}
@Override
public Date getObject() throws Exception {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.parse(dateStr);
}
@Override
public Class<?> getObjectType() {
return null;
}
}
<!-- 利用工厂Bean DateFactoryBean 创建指定日期的Date对象 -->
<bean id="date1" class="cw.spring.study.bean.DateFactoryBean">
<property name="dateStr" value="2023-05-22"/>
</bean>
<bean id="student" class="cw.spring.study.bean.Student">
<property name="birth" ref="date1"/>
</bean>