SpringMVC-自定义类型转换器

类型转换器的介绍

我们在正常开发中,SpringMVC帮我们配置好的类型转换器已经够我们使用了,但是我们还会遇到一些SpringMVC没有帮我配置好的类型转换,例如:时间日期类型的转换,字符串(非Json)和POJO之间的转换,这时我们就需要自定义一个类型转换器,来让SpringMVC能够帮我实现类型转换

SpringMVC具体帮我们实现了哪些类型转换器,大家可以看这篇博客
SpringMVC–Converter(类型转换器)详解

类型转换发生在视图和控制器之间相互递交数据的时候,例如:当我们从请求中获取参数的时候(实际上请求参数都是String类型的,但是我们可以将其传递给Integer类型的参数,这时就发生了自动类型转换)


下面说一下如何实现自定义类型转换器

  1. 自定义类型转换器,实现Convert接口
  2. 在配置文件中声明我们自定义的类型转换器(即,将自定义类型转换器交给Spring管理)
  3. 中引用我们自定义的转换器

1.自定义类型转换器,实现Convert接口


//Converter; S:源,T:目标
//所以下面的自定义的类型转换器的功能为:将String类型转换为Date类型
public class DataConverter implements Converter<String, Date> {
    @Override
    public Date convert(String dateStr) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}

2.在配置文件中声明转换器

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            
            <bean class="com.itheima.converter.DataConverter"/>
        list>
    property>
bean>

3.在中引用转换器


<mvc:annotation-driven conversion-service="conversionService"/>

所以我们可以在处理器(Controller)中,这样使用

@RequestMapping("/quick18") 
@ResponseBody
//请求URL:localhost:8080/quick18?date=2020-11-13
public void save18(Date date) throws IOException {
	System.out.println(date); 
}

你可能感兴趣的:(SpringMVC,spring,java,springmvc)