@DateTimeFormat和@JsonFormat的区别和使用场景

一、区别

@DateTimeFormat 用于前端给后端传参时

@JsonFormat 用于后端给前端返回时

二、使用场景
2、1 @JsonFormat的场景

1、**(错误写法) **如果参数是实体类,不可以使用@DateTimeFormat,这种写法前端传参序列化会报错,

这是因为 @RequestBody 通常与 HttpMessageConverter(例如 MappingJackson2HttpMessageConverter)一起工作,它使用 Jackson 库来序列化和反序列化 JSON 数据。Jackson 支持 @JsonFormat 注解来进行日期时间的格式化,而不是 @DateTimeFormat。


(正确写法)

2、2 @DateTimeFormat的场景

如果你使用 @DateTimeFormat,它是由 Spring MVC 的数据绑定机制支持的,适用于处理表单数据或查询参数,而不是 JSON 数据。

最后(还是建议全局处理)

os: 你真该死啊,有这不放最上面,我看半天前面的,你切记,都多余了嗷!!!!

java 复制代码
    final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    /**
     * 格式化Long类型返回前端,精度丢失问题
     * 格式化datetime返回时间格式问题
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder
                .serializerByType(Long.class, ToStringSerializer.instance)
                .serializerByType(Long.TYPE, ToStringSerializer.instance)
                .serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(formatter))
                .deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
    }
相关推荐
什巳12 小时前
JAVA练习278- 和为 K 的子数组
java·学习·算法·leetcode
豆瓣鸡12 小时前
RocketMQ学习-Spring Boot消息实践
java·spring boot·rocketmq
罗超驿13 小时前
2.算法效率的核心密码:时间复杂度和空间复杂度详解
java·数据结构·算法
栈溢出了14 小时前
Redis 分片集群与哈希槽笔记
java·redis·笔记·spring
遨游DATA14 小时前
Spring Boot 启动失败排查:如何区分多 Bean 冲突与清理阶段异常
java·spring boot·后端
wabs66615 小时前
关于单调栈【力扣739.每日温度的思考】
java·开发语言
雪碧聊技术15 小时前
为什么要学函数式编程?
java·函数式编程
aaPIXa62215 小时前
C++ 用 13 条规则让模型写出安全现代 C++
java·c++·安全
2601_9498177217 小时前
C++指针与引用深度精讲:底层原理、差异对比与高阶实战陷阱
java·jvm·c++
va学弟17 小时前
Java 网络通信编程(10):Channel 和 Selector
java·开发语言