首页 > 编程语言 >SpringMVC处理Java8新日期类参数

SpringMVC处理Java8新日期类参数

时间:2023-12-22 10:56:14浏览次数:43  
标签:SpringMVC json private class 日期 DateTimeFormat using 序列化 Java8

SpringMVC如何将request参数自动封装为LocalDate和LocalDateTime

在使用SpringMVC时,java.util.Date类型字段可以使用@DateTimeFormat注解将application/x-www-from-urlencoded类型的请求中的字符串进行自动转换。而Java 8中新的时间类型该如何支持呢?

在application/x-www-from-urlencoded(键值对)请求中自动转换新时间类型

Spring4.0开始,Spring的context模块包中增加了Jsr310DateTimeFormatAnnotationFormatterFactory工厂类。该类是对@DateTimeFormat注解的JSR310标准扩展支持。因此,在Spring4.0之后,可以直接使用@DateTimeFormat注解标注LocalDate等新时间类型字段,从而实现时间格式字符串到新时间类型的自动转换。

如:

public class SimpleRequest {
    
    private Integer id;
    
    @DateTimeFormat(iso = ISO.DATE)
    private LocalDate startDate;
    
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;
}

在JSON请求中支持新时间类型的转换

如果请求的格式为application/json,则@DateTimeFormat注解将不再生效,取而代之的是Spring默认使用Jackson作为json的序列化工具,因此需要增加Jackson对新时间类型的反序列化器(Deserializer)来支持新时间类型的转换。

Jackson官方已经提供了对JSR310标准的支持包,只需在pom文件中添加以下配置引入依赖(版本自选):

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.9.3</version>
</dependency>

然后在需要反序列化(序列化)的对象字段上添加@JsonDeserialize(using = LocalDateDeserializer.class)@JsonSerialize(using = LocalDateSerializer.class))注解,Jackson便会使用该反序列化器将json字段反序列化成LocalDate类型。

如:

public class SimpleRequest {
    
    private Integer id;
    
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate startDate;
    
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    private LocalDateTime startTime;
}

在Spring Boot 2.0之后,将默认依赖spring-boot-starter-json包,该依赖包括了jackson-datatype-jsr310在内的3种json实用工具包,因此不需要再手动添加依赖

转自:简书-小花的胖次

标签:SpringMVC,json,private,class,日期,DateTimeFormat,using,序列化,Java8
From: https://www.cnblogs.com/giaogiaoyang/p/17920802.html

相关文章

  • 通过指定日期获取本周五,上周五 本周一上周一
    通过指定日期获取本周五,上周五 周一,周二,周三,周四,周五,周六,周日,对应0,1,2,3,4,5,6 --本周五SELECTDATE_FORMAT(DATE_SUB('2023-12-28',INTERVALWEEKDAY('2023-12-28')-4DAY),'%Y%m%d')ASmonday--上周五selectDATE_SUB(DATE_SUB('2023-12-21'......
  • MySQL 获取日期、时间、时间戳
    MySQL获取当前日期、时间、时间戳函数_mysqldate_sub时间戳-CSDN博客#获取当前时间curtime()mysql>selectcurtime();+-----------+|curtime()|+-----------+|10:39:25|+-----------+#获取当前日期curdate()mysql>selectcurdate();+------------+|cur......
  • python中的 时间、日期写法。
    python打印当前日期时间 一、打印 带日期与时间点 方法一:使用datetime模块:importdatetimenow=datetime.datetime.now()print(now)效果如下: 方法二:使用time模块:importtimenow=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())print(now) ......
  • Java8 list的lambda表达式
    List<PersonList>list=newArrayList<PersonList>(){{add(newPersonList("张三","1"));add(newPersonList("李四","2"));add(newPersonList("王五","3"));add(newPersonLi......
  • MATLAB常用日期和时间函数
    在MATLAB中得到系统当前日期、时间也是经常用到的内容,由以下函数实现。1.生成指定格式日期和时间datestr-生成指定格式日期和时间,是字符型变量。>> datestr(now) %其中now是获取当前日期和时间ans=    30-Dec-200916:05:16其中输出格式可由用户指定,共有31种格式,以下是......
  • 第一章:SpringMVC的概述及简介
    一、springMVC课程介绍二、springMVC导学、回顾三、springMVC的简介和特点......
  • 第二章:SpringMVC的配置文件(web.xml)及访问页面
    一、开发环境二、创建maven工程三、默认方式配置web.xml四、扩展方式配置web.xml五、创建控制器六、配置springMVC配置文件七、访问首页八、访问指定页面九、总结......
  • oracle日期加减的三种方式
    直接加减数字selectsysdate当前时间,sysdate+1加一天,sysdate-1减一天,sysdate+(1/24)加一小时,sysdate+(1/24/60)加一分钟fromdual;使用a......
  • vue-element-ui 日期选择器 前后端联调
    前端:<el-col:span="8"><divclass="block"><el-col:span="4">交接日期</el-col><el-col:span="1"></el-col><el-col:span="16&quo......
  • 第五章:SpringMVC的常用注解
    一、21、springMVC常用注解二、springMVC相关注解理论整合1、@RequestMapping:用来处理请求地址映射的注解,可用于类或方法上@RequestMapping("/path")表示该控制器处理所有"/path"的URL请求。用于类上,表示类中的所有响应请求的方法都是以该地址作......