springboot自定义日期参数转换器

当后台接收到Date类型字段时,通常会遇到字符串到日期转换异常。为避免在每个实体类中手动添加转换注解,可以创建一个自定义的日期转换器(DateConverter),实现Spring的Converter接口,将字符串按指定格式转换为Date。然后在WebMvcConfig中注册该转换器,从而全局处理日期转换问题。通过这个方法,可以有效地减少代码重复并提高效率。
摘要由CSDN通过智能技术生成

一般不添加任何配置的情况下,后台接收Date类型的字段会出现如下异常:

Failed to convert from type [java.lang.String] to type [java.util.Date] for value

常见解决方案可以在接收实体类的Date参数上添加注解

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime date;

然而如果在每个生成的实体类中,给每一个带有Date类型接收的参数上添加如上注解,感觉又不太节能。

因此我们自定义一个日期参数转换器让他自动转换,分为俩步。

第一步

import org.springframework.core.convert.converter.Converter;

import java.text.SimpleDateFormat;
import java.util.Date;

/**

 * 日期转换类

 * 将标准日期、标准日期时间、时间戳转换成Date类型
 * @author godissleepy

 */

public class DateConverter implements Converter<String,Date> {
    private final SimpleDateFormat smf =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Override
    public Date convert(String s) {
        if ("".equals(s) || null == s) {
            return null;
        }

        try {
            return smf.parse(s);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
}

第二步

import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new DateConverter());
    }
}

写个简单的接口测试一下

    @GetMapping("/getDate")
    public Date getDate(Date date) {
        return date;
    }

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值