4自定义类型转换器

自定义类型转换器

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类型就不会报类型转换异常了

image-20210521093451588

posted on 2021-05-22 17:07  NathenJames  阅读(83)  评论(0编辑  收藏  举报