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

文章目录

  • 前言
  • 装备
  • Core-Code
    • 日期转换类
    • 日期转换拦截器
  • Github
  • 作者

前言

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

首先了解一下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;
/**
 * DateConverter
 * 

* Description: 日期转换 *

* Creation Time: 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; } }

日期转换拦截器

/**
 * WebConfig
 * 

* Description: 拦截器拦截请求后转换日期 *

* Creation Time: 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-java

在【hui-base-common】下面的 com.hui.base.common.convert

作者

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

你可能感兴趣的:(JavaWeb,Developer,Manual)