Spring自定义类型转换器

本文介绍了如何在Spring框架中自定义类型转换器,以满足将特定格式的日期字符串转换为Date类型的需要。首先,需要实现Converter接口,然后创建自定义转换器类并处理转换逻辑。接着,在Spring配置文件中声明并注册该转换器,通过ConversionServiceFactoryBean进行配置。此外,转换器中的日期格式可以通过依赖注入从配置文件获取,增加了灵活性。最后,注意Spring内建的日期转换器只支持特定格式,如'2020/05/01',对于'2020-05-01'这样的格式则需要自定义转换。

自定义类型转换器

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) **

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神烦狗闯入了你的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值