【SpringBoot】拦截器实现日期转换

版权声明:小哥哥小姐姐们,本文为小博主原创文章,转载请附上博主博文网址,并标注作者谢谢~~。违者必究 https://blog.csdn.net/HuHui_/article/details/84782263

前言

准备更新微服务相关的文章…大数据更新推后

首先了解一下SpringBoot本身自带的功能

  1. 传入Date转换 ==>使用注解@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”),并配置application.yml

  2. 返回Response的Date使用注解==>@JsonFormat(pattern=“yyyy-MM-dd HH:mm:ss”),并配置application.yml

      jackson:
        time-zone: GMT+8
        date-format: yyyy-MM-dd HH:mm:ss
    

但是老实说,我遇到了不起作用的情况,特别是用swaggerUI测试的时候,我个人比较懒,直接用一个拦截器自动转换日期就好了。。

装备

  • SpringBoot2.x

Core-Code

日期转换类

  1. 注意引入:import org.springframework.core.convert.converter.Converter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.convert.converter.Converter;
import org.springframework.util.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * <b><code>DateConverter</code></b>
 * <p/>
 * Description: 日期转换
 * <p/>
 * <b>Creation Time:</b> 2018/11/24 12:44.
 *
 * @author Hu Weihui
 */
@Slf4j
public class DateConverter implements Converter<String,Date> {

    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";


    @Override
    public Date convert(String source) {
        if(StringUtils.isEmpty(source)) {
            return null;
        }
        try{
            source = source.trim();
            if (source.contains(":")){
                SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
                return formatter.parse(source);
            }
            else if(source.matches("^\\d+$")){
                Long time = Long.valueOf(source);
                return new Date(time);
            }
        } catch (ParseException e) {
            log.info("[DateConverter] convert date parseException ",e );
        }
        log.info("[DateConverter] not match timestamp or date ");
        return null;
    }
}

日期转换拦截器

/**
 * <b><code>WebConfig</code></b>
 * <p/>
 * Description: 拦截器拦截请求后转换日期
 * <p/>
 * <b>Creation Time:</b> 2018/11/24 12:38.
 *
 * @author Hu Weihui
 */
@Configuration
@Slf4j
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private RequestMappingHandlerAdapter handlerAdapter;


    @PostConstruct
    public void initEditableAvlidation() {

        ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter.getWebBindingInitializer();
        if (initializer.getConversionService() != null) {
            GenericConversionService genericConversionService = (GenericConversionService) initializer.getConversionService();
            genericConversionService.addConverter(new DateConverter());
        }
    }
 
}

github

https://github.com/ithuhui/hui-base-springboot/tree/master/hui-base-springboot-rest/src/main/java/com/hui/base/springboot/aspect

作者

 作者:HuHui
 转载:欢迎一起讨论web和大数据问题,转载请注明作者和原文链接,感谢

猜你喜欢

转载自blog.csdn.net/HuHui_/article/details/84782263