时间格式不能正常转换?
发表于|更新于|后端
|浏览量:
@DateTimeFormat 注解
前台到后台的时间格式转换,对于GET 请求参数可以正常工作。对于 POST 请求会报反序列化错误




POST 请求会使用 JSON 反序列化,不会使用 @DateTimeFormat 注解。

POST 表单(body)实现时间格式转换的方法
使用 @JsonFormat 注解
但是这种代码侵入性强,可维护性差

实现自定义格式转换器 @JsonDeserialize
可以支持多种时间格式的转换:


指定反序列化器

定义全局配置类避免冗余代码

指定转换器做Date类型的反序列化:

在对象中就不需要指定对应的注解了。
文章作者: 褚成志
相关推荐
2026-04-09
异步任务的坑
Spring Boot 中编写异步任务两个注解: @EnableAsync:开启当前项目的异步功能 @Async:当前方法标记为异步方法 注意一个规则:有没有返回值。 没有返回值的例子: 返回值实现了 Future 接口: 下 异步任务的线程池配置默认情况下,异步任务的线程池是怎么配置的,是否满足我们的需求呢? 配置线程池参数默认是启动下面的线程池: 线程池对应的自动配置类如下: 可以使用下面的参数配置异步任务线程池相关的参数: 异步任务返回超时对于异步任务有返回的情况,如果获取结果超时怎么办呢? get 有重载方法可以设置超时的时间,超时之后就会抛出 TimeOut 异常: 没有返回值的异步任务抛异常对于异步任务没有返回的情况(有返回的直接 get 的时候就会抛异常),但是下面的异步任务执行的时候抛出异常,但是没有任何的其他返回: Spring 默认的异步任务异常处理器,会将对应的异常打印到日志里面: 自定义异步线程池和异常处理器 自定义异步线程池的实现: 自定义异常处理器
2026-04-09
读取了Request输入流,请求数据就不见了
HttpServletRequest 和 HttpServletResponse 中存在方法互斥。 在过滤器、拦截器中对 HTTP 请求中的数据做校验、审计是非常常见的需求 Request 输入流数据一但被读取,Controller找不到了Request 的 getlnputStream 和 getReader 都只能使用一次 请求数据解析工具: 定义拦截器: 发起请求: Request的 getlnputStream、 getReader、 getParameter 方法互斥,也就是使用了其中一个,再使用另外的两个,是获取不到数据的。 Response 也是一样的,与 Request 几乎是一样的 互斥效果的原理: getParameter 内部也会判断: 无法重复读取的原理读取完坐标没有重置: getReader 也是没有重置坐标 HttpServletRequestWrapper + Filter 解决输入流不能重复读取问题其实是包装器模式,实现对请求数据的包装。 自定义请求包装器: 每次获取数据的时候都是重新从数组里面获取 这个方法直接调用上面重写的 g...
2026-04-09
依赖冲突的发现和解决
依赖冲突的发现 现象一:一个类的行为不按照预期,本来这个类应该是有这个方法的,但是引入一个新的依赖之后就开始报错找不到方法了,一般就是依赖冲突的时候 Maven 自己选择了一个不符合自己预期的依赖导致报错。 依赖冲突的解决使用 Maven helper 找到对应类所在 jar 的依赖都由谁导入,之后排除掉不符合自己预期的依赖即可。 一般直接在插件右键就可以 exclude
2026-04-09
JSON字符串转换为Map
利用阿里巴巴封装的FastJSON来转换json字符串 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.util.Map; public class JsonToMapTest01 { public static void main(String[] args){ String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wan...
2026-04-09
javaLong类型在前端json数据损失精度
方法一:重新生成pojo对象,将所有数据库类型为bigint都映射成String类 方法二:对于使用springboot,则增加配置代码: 12345678910111213141516171819202122232425262728293031package com.gj.app.config; import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.module.SimpleModule;import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;import org.springframework.context.annotation.Configuration;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.http.converter.json.Map...
2026-04-09
IDE热加载与热部署
热加载则是在运行时通过重新加载class改变类信息,直接改变程序行为。 **主要依赖java的类加载机制,在实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则将类重新载入。**对比反射机制,反射是在运行时获取类信息,通过动态的调用来改变程序行为; 热部署就是在服务器运行时重新部署项目, 直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。 JRebel 加载的速度优于 devtools JRebel 不仅仅局限于 Spring Boot 项目,可以用在任何的 Java 项目中。 devtools 方式的热部署在功能上有限制,方法内的修改可以实现热部署,但新增的方法或者修改方法参数之后热部署是不生效的。 JRebelJRebel 可实现热加载,节省了大量重启时间,提高了个人开发效率。 虚拟机插件,即时分别看到类和资源的变化,直接反应在部署好的应用程序上,从而跳过了构建和部署的过程 激活安装之后会提示输入license激活。使用下面的网址生成服务器地址GUID https://www...
公告
👋 你好,我是褚成志,一名专注于云原生与后端架构的工程师。
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
热爱 Java、Kubernetes、Linux、Redis、Spring 等技术领域,持续探索 AGI 与智能化运维的边界。
这里记录我的技术思考与实践总结,欢迎交流!
