第十二章 自定义类型转换器
1.类型转换器
作用:Spring通过类型转换器把配置文件中字符串类型的数据,转换成对象中成员变量对应类型的数据,从而完成注入
2.自定义类型转换器
当Spring内部没有提供特定的类型转换器时,而程序员在应用过程中还需要使用,那么就需要程序员自己定义类型转换器
-
实现Converter<s,t>接口
public class MyDateConverter implements Converter<String, Date> { /* convert:将String类型转换为Date param:source 代表配置文件中的日期字符串 return:Date 返回Date类型,让Spring拿到转换后的数据 */ @Override public Date convert(String source) { Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); date = sdf.parse(source); } catch (ParseException e) { e.printStackTrace(); } return date; } }
-
在Spring配置文件中进行配置
-
将MyDateConverter对象创建出来
<bean id="myDateConverter" class="com.dong.converter.MyDateConverter"/>
-
类型转换器的注册
目的:告知Spring框架,MyDateConverter是一个类型转换器 将MyDateConverter注入conversionService <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <ref bean="myDateConverter"/> </set> </property> </bean>
-
3.细节
-
MyDateConverter中的日期格式, 可以通过依赖注入的方式, 由配置文件完成赋值
public class MyDateConverter implements Converter<String, Date> { private String pattern; public String getPattern() { return pattern; } public void setPattern(String pattern) { this.pattern = pattern; } /* convert:将String类型转换为Date param:source 代表配置文件中的日期字符串 return:Date 返回Date类型,让Spring拿到转换后的数据 */ @Override public Date convert(String source) { Date date = null; try { SimpleDateFormat sdf = new SimpleDateFormat(pattern); date = sdf.parse(source); } catch (ParseException e) { e.printStackTrace(); } return date; } }
<bean id="myDateConverter" class="com.dong.converter.MyDateConverter"> <property name="pattern" value="yyyy-MM-dd"/> </bean>
-
ConversionServiceFactoryBean定义的id属性值必须是
conversionService
-
Spring框架内置了日期类型装换器, 但格式有要求
日期格式: 2022/04/16 (不支持: 2022-4-16)