千家信息网

spring-cloud-feign怎么对Java8日期的序列化

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"spring-cloud-feign怎么对Java8日期的序列化",在日常操作中,相信很多人在spring-cloud-feign怎么对Java8日期的序列化问题上存在疑惑,小编查阅
千家信息网最后更新 2026年11月01日spring-cloud-feign怎么对Java8日期的序列化

这篇文章主要介绍"spring-cloud-feign怎么对Java8日期的序列化",在日常操作中,相信很多人在spring-cloud-feign怎么对Java8日期的序列化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"spring-cloud-feign怎么对Java8日期的序列化"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

spring-cloud-feign 对 Java8 日期的序列化

前言

如果用过spring-cloud的同学应该知道,feign接口默认底层默认是http来进行请求的,一般spring的web项目都是通过Jackson来进行序列化跟反序列化,在对象传输的时候,如果对象里面的时间类型是Java8的时间类,可能会反序列化失败,因此,我们需要配置一下针对Java8提供的时间类进行定制的序列化,因此,我们默认使用LocalDateTime示例,LocalDate跟LocalTime实际上也是一样的

引入JSR310依赖

在项目内,我们引用下依赖

    com.fasterxml.jackson.datatype    jackson-datatype-jsr310    2.8.11

使用JSR310默认配置

默认的情况下,JSR310给我们提供了转换成字符串的序列化/反序列化类,分别是LocalDateTimeSerializer/LocalDateTimeDeserializer,我们可以使用已经有的实现,来进行序列化

接着我们通过Spring的自动装配,返回一个Bean

@Configurationpublic class JacksonSerializerConfiguration{    @Bean    public ObjectMapper buildObjectMapper(){        ObjectMapper objectMapper = new ObjectMapper();        JavaTimeModule javaTimeModule = new JavaTimeModule();        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))                      .addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));                      objectMapper.registerModule(javaTimeModule);        return objectMapper;    }}

使用自定义配置

当然,我们不想使用默认的,我们也可以自定义配置,继承JsonSerializer类,实现抽象方法,或者继承JSR310的InstantSerializer类,然后重写构造器,作为示例,我们就继承JsonSerializer作为演示

例如,我们想序列化LocalDateTime到秒的时间戳,代码如下

public class InstantSerializer extends JsonSerializer {    @Override    public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {        gen.writeNumber(DateUtils.toSecond(value));    }}public class InstantDeserializer extends JsonDeserializer {    @Override    public LocalDateTime deserialize(JsonParser p, DeserializationContext txt) throws IOException, JsonProcessingException {        return Instant.ofEpochSecond(p.getLongValue()).atZone(ZoneId.systemDefault()).toLocalDateTime();    }}@Configurationpublic class JacksonSerializerConfiguration{    @Bean    public ObjectMapper buildObjectMapper(){        ObjectMapper objectMapper = new ObjectMapper();        JavaTimeModule javaTimeModule = new JavaTimeModule();        javaTimeModule.addSerializer(LocalDateTime.class, new InstantSerializer())                      .addDeserializer(LocalDateTime.class,new InstantDeserializer());                              objectMapper.registerModule(javaTimeModule);          return objectMapper;    }}

总结

JSR310给我们很多的基础实现,简单的可以使用基础的实现,如果要自定义的话,通过继承jackson提供的抽象类,自己进行实现,两者实现上差不多,不过通过继承更灵活,更可控,使用jsr310更方便,具体的使用就仁者见仁智者见智了

到此,关于"spring-cloud-feign怎么对Java8日期的序列化"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

序列 日期 时间 学习 配置 基础 对象 方法 更多 示例 项目 帮助 实用 仁者见仁 智者见智 差不多 接下来 仁者 代码 前言 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有格互联网科技 广州为想互联网科技有限公司 智能科技公司是互联网公司吗 北京互联网科技有限公司 高科技与互联网 为想互联网科技 广州凡科互联网科技 唐信互联网科技 大连 卓越科技互联网 招聘 科技与互联网的利与弊 天速互联网络科技有限公司 福建科技产业互联网发展 港股科技和互联网 广州千川互联网科技有限公司 产业互联网科技服务公司 张召忠谈中国互联网科技 互联网相关科技技术 互联网金融运营模式中的金融科技 互联网企业和网络科技有限公司 如何强化互联网金融科技 互联网 科技创业 互联网科技咨询 国外互联网科技网站 盛创互联网科技有限公司 成都仁贤领冠互联网科技有限公司 华夏恒生科技与互联网科技 工业互联网展湾科技股份有限公司 互联网安防科技感 珠海东科互联网科技有限公司 互联网 科技节活动 微视频大赛
0