自定义类型转换器
Spring学习笔记 周芋杉2021/5/21
1.为什么要自定义类型转换器
在注入时,我们能把配置文件里面<value>标签内的数据赋值给目标类,存储在<value>内的数据是String类型的,那为什么能赋值给如Integer等非字符串类型?
而某些数据类型不可以,比如把java.lang.String的类型转为java.util.Date。
2.类型转换器
把java.lang.String的类型转为java.util.Date,通常做法是使用转换函数
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//注意月份是MM
Date date = simpleDateFormat.parse("2099-010-02");
3自定义Spring类型转换器
开发步骤
1.实现org.springframework.core.convert.converter.Converter的Converter<s,t>接口
泛型Converter<s,t>指从s类型转为t类型
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
return null;
}
实现转换方法
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
Date date=null;
try {
SimpleDateFormat trans =new SimpleDateFormat("yyyy-MM-dd");
date=trans.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
//返回值为转换类型
return date;
}
2在XML配置文件中注册
- 先实现刚才创建的类
<bean id="dateConverter" class="org.Coverter.DateConverter"/>
-
再在ConversionServiceFactoryBean里面注册
注意id必须为conversionService
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="dateConverter"/>
</set>
</property>
</bean>
在使用从配置文件注入给Date类型就不会报类型转换异常了