【SpringBoot】AOP-实现日期类型转换

前言

项目为了同一个接口入参的时间做的AOP时间转换
首先了解一下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测试的时候,我个人比较懒,直接用一个拦截器自动转换日期就好了。。

Github

地址:https://github.com/ithuhui/hui-base-java
分支:master
模块:【hui-base-common】
位置:com.hui.base.common.convert.DateConverter

Ready

  • SpringBoot2.x
  • IDEA
  • maven

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());
        }
    }
 
}

作者

 作者:HuHui
 转载:欢迎一起讨论web和大数据问题,转载请注明作者和原文链接,感谢
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值