自定义类型转换器
1. 类型转换器
作用:Spring通过类型转换器把配置文件中字符串类型的数据,转换成了对象中成员变量对应类型的数据,进而完成了注入

2. 自定义类型转换器
当Spring内部没有提供特定类型转换器时,而程序员在应用的过程中还需要使用,那么就 需要程序员自己定义类型转换器。
设计一个场景,我们在配置文件中想要将日期字符串按照想要的格式转换成Date类型。就需要自定义一个类型转换器。
开发步骤:
- 实现Converter接口
注意全类名为:org.springframework.core.convert.converter.Converter
Converter接口源码:是一个函数式接口。
@FunctionalInterface
public interface Converter<S, T> {
@Nullable
T convert(S source);
}
自定义实现类
public class MyConverter implements Converter<String, Date> {
@Override
public Date convert(String s) {
Date date = null;
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
date = simpleDateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
- 在Spring的配置文件中进行配置
MyDateConverter对象创建出来
<bean id="myDateConverter" class="xxxx.MyDateConverter"/>
- 类型转换器的注册
⽬的:告知Spring框架,我们所创建的MyDateConverter是⼀个类型转换器
<!--⽤于注册类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="myDateConverter"/>
</set>
</property>
</bean>
3. 细节
- MyDateConverter中的日期的格式,可以通过依赖注入的方式,由配置文件完成赋值 。
public class MyConverter implements Converter<String, Date> {
private String pattern;
public String getPattern() {
return pattern;
}
public void setPattern(String pattern) {
this.pattern = pattern;
}
@Override
public Date convert(String s) {
Date date = null;
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
date = simpleDateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
Spring配置文件:
<!--Spring创建MyDateConverter类型对象-->
<bean id="myDateConverter" class="com.baizhiedu.converter.MyDateConverter">
<property name="pattern" value="yyyy-MM-dd"/>
</bean>
-
ConversionSeviceFactoryBean 定义id属性值必须为 conversionService
-
**Spring框架中有内置期类型的转换器: 日期格式: 2020/05/01 (不支持 : 2020-05-01) **
本文介绍了如何在Spring框架中自定义类型转换器,以满足将特定格式的日期字符串转换为Date类型的需要。首先,需要实现Converter接口,然后创建自定义转换器类并处理转换逻辑。接着,在Spring配置文件中声明并注册该转换器,通过ConversionServiceFactoryBean进行配置。此外,转换器中的日期格式可以通过依赖注入从配置文件获取,增加了灵活性。最后,注意Spring内建的日期转换器只支持特定格式,如'2020/05/01',对于'2020-05-01'这样的格式则需要自定义转换。
403

被折叠的 条评论
为什么被折叠?



