本文共 2285 字,大约阅读时间需要 7 分钟。
@FunctionalInterfacepublic interface Converter{ /** 提供类型转换的逻辑 */ @Nullable T convert(S source);}
之前通过InitBinder和DateTimeFormat注解实现过字符串转date,现在也可以通过Converter实现该功能
package study.wyy.spring.anno.web.convert;import org.springframework.core.convert.converter.Converter;import org.springframework.stereotype.Component;import org.springframework.util.StringUtils;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;/** * @author by wyaoyao * @Description * @Date 2021/2/15 7:49 下午 */@Componentpublic class String2DateConverter implements Converter{ @Override public Date convert(String source) { //1.判断来源是否有值 if (StringUtils.isEmpty(source)) { throw new NullPointerException("Source can not be null!"); } try{ //2.定义转换器 DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //3.转换并返回 return format.parse(source); }catch (Exception e){ e.printStackTrace(); } return null; }}
注册
package study.wyy.spring.anno.web.advice;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.core.convert.ConversionService;import org.springframework.core.convert.converter.Converter;import org.springframework.core.convert.support.GenericConversionService;import org.springframework.format.datetime.DateFormatter;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.InitBinder;@ControllerAdvicepublic class DataFormatAdvice { @Autowired private Converter stringToDateConverter; @InitBinder public void dateBinder(WebDataBinder dataBinder){ //1.获取转换服务对象 ConversionService conversionService = dataBinder.getConversionService(); //2.判断conversionService是否为GenericConversionService类型 if(conversionService instanceof GenericConversionService){ //3.强转 GenericConversionService genericConversionService = (GenericConversionService)conversionService; //4.添加类型转换器 genericConversionService.addConverter(stringToDateConverter); } }}
转载地址:http://msrv.baihongyu.com/