springboot中配置前后端日期格式转化

一、说在前面

springboot的自动注入中内嵌了格式转化器,如果不做配置按照系统的默认时间格式请求和响应数据。

形如:Wed Mar 20 10:32:29 CST 2024

也就是说如果请求响应的数据和这个格式一样,就能成功,就不会报404

内嵌格式转化器:

支持自定义格式转化器的注册:

二、前端到后端日期格式转换

方法一:配置文件方法(在application.yml配置文件中)

复制代码
spring:
  mvc:
    date-format: yyyy-MM-dd

方法二:在实体类中日期属性前加DateTimeFormat注解

复制代码
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date birth;

方法三:自定义配置文件实现WebMvcConfigurer接口,重新格式转化器

复制代码
@Override
public void addFormatters(FormatterRegistry registry) {
    registry.addFormatter(new Formatter<Date>() {
        @Override
        public String print(Date date, Locale locale) {
            return null;
        }
        @Override
        public Date parse(String s, Locale locale) throws ParseException {
            return new SimpleDateFormat("yyyy-MM-dd").parse(s);
        }
    });
}

三、后端到前端日期格式转换

方法一:消息转化器和fastjson结合

fastjson是阿里的开源包,用于对json格式数据的解析处理。

在Spring MVC中,消息转换器(MessageConverter)是用于处理请求和响应中的数据转换的组件。它负责将HTTP请求中的数据转换为Java对象,并将Java对象转换为HTTP响应数据。常见的消息转换器包括处理JSON、XML、Form表单等格式的转换器。

pom.xml中引入fastjson依赖

复制代码
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.47</version>
</dependency>

在自定义配置类中配置消息转化器

复制代码
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    FastJsonHttpMessageConverter fc = new FastJsonHttpMessageConverter();
    FastJsonConfig fastJsonConfig = new FastJsonConfig();
    fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
    fc.setFastJsonConfig(fastJsonConfig);
    converters.add(fc);
}

在实体类上加@jsonfield注解

复制代码
@JSONField(format = "yyyy-MM-dd")
private Date date;

四、一个注解请求响应双向日期格式转换

`@JSONFormat` 是Fastjson库中的注解,用于指定JSON序列化和反序列化时的格式化规则,如日期格式、数字格式等。这个注解可以用于类的字段上,以定制化JSON的格式化输出。

复制代码
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8"))
private Date birth;
//timezone用于指定是区,上面取值是东八区北京时间

注意在使用这个注解时请求的数据和响应的数据必须是json格式的。

相关推荐
Penge6661 天前
Go 接口编译期断言
后端
我是一颗柠檬1 天前
【MySQL全面教学】MySQL面试高频考点汇总Day15(2026年)
数据库·后端·mysql·面试
橙淮1 天前
并发编程(六)
java·jvm
拽着尾巴的鱼儿1 天前
springboot openfeign 自定义feign 接口重试机制
java·spring boot·后端
白露与泡影1 天前
2026大厂Java面试题大全!牛客网最新版
java·开发语言
Ceelog1 天前
久坐党自救指南:屏幕前 8 小时,身体到底在经历什么
前端·后端
EntyIU1 天前
JVM内存与GC笔记
java·jvm·笔记
XS0301061 天前
并发编程 六
java·后端
yaoxin5211231 天前
419. 现代 Java IO 最佳实践 - 写入文本文件
java·windows·python
雪宫街道1 天前
synchronized 锁的范围:对象锁、类锁与代码块锁
java·jvm·后端·面试