spring boot使用redis 存储数据时 字段为时间类型为LocalDateTime 发现存储到redis变成了对象

在项目中从redis获取带有LocalDateTime类型属性的对象时出现了以下异常:

go 复制代码
"createTime": {
    "dayOfYear":141,
    "dayOfWeek":"WEDNESDAY",
    "month":"MAY",
    "dayOfMonth":20,
    "year":2020,
    "monthValue":5,
    "hour":19,
    "minute":50,
    "second":47,
    "nano":364000000,
    "chronology":{
        "calendarType":"iso8601",
        "id":"ISO"
    }
}

这是因为我们将数据存入redis时,Jackson默认将LocalDateTime类型序列化为对象形式存储

网上的方案是

两种方案

  1. 全局配置 时间类型 序列化
  2. 在实体类上打注解
    // @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    // @JsonSerialize(using = LocalDateTimeSerializer.class)

打注解太麻烦了

  1. 全局配置方案 项目中配置了 但是 还是没解决 不知道哪里出了问题
    下面是我搜的 博客地址 大家可以参考一下

https://blog.csdn.net/weixin_41291118/article/details/123087974

我根据博客 配置了 redisConfig 但是没解决问题

我觉得是可以用的 有可能是我项目中 哪里 影响到了配置

所以最终根据网上的 方案我没成功

我就直接放弃了 使用 Jackson 这个类来序列化

在存 取 redis 数据的时候 用 fastjson 来处理 这样存进去的 LocalDateTime 类型 就是字符串了 就不是对象了

JSONObject.toJSONString 和 JSONObject.parseObject

go 复制代码
    public static <T> T getString(String key, Class<T> valueType) {
        String value = (String) redisTemplate.opsForValue().get(key);

        if (StringUtils.isEmpty(value)) {
            return null;
        }
        return JSONObject.parseObject(value, valueType);
    }
    public static void delString(String key) {
        redisTemplate.delete(key);
    }

    public static <T> Boolean setString(String key, T value, long time, TimeUnit unit) {
        String valueStr = JSONObject.toJSONString(value);
        redisTemplate.opsForValue().set(key, valueStr);
        if (time > 0) {
            redisTemplate.expire(key, time, unit);
        }
        return true;
    }

    public static <T> Boolean setString(String key, T value, long time) {
        String valueStr = JSONObject.toJSONString(value);
        redisTemplate.opsForValue().set(key, valueStr);
        if (time > 0) {
            redisTemplate.expire(key, time, TimeUnit.SECONDS);
        }
        return true;
    }
相关推荐
代码程序猿RIP几秒前
【C 语言面试】高频考点深度解析
java·面试·职场和发展
ashane131414 分钟前
Springboot 启动过程及源码分析
java·spring boot·后端
caron415 分钟前
c++ -- 循环依赖解决方案
java·c++·算法
七夜zippoe22 分钟前
深入理解Java泛型:类型擦除、通配符PECS原则与实践
java·泛型·通配符·类型擦除·pecs
后端小张29 分钟前
【JAVA进阶】SpringBoot启动流程深度解析:从main方法到应用就绪的完整旅程
java·spring boot·后端·spring·spring cloud·java-ee·流程分析
猫头虎38 分钟前
Rust评测案例:Rust、Java、Python、Go、C++ 实现五大排序算法的执行时间效率比较(基于 OnlineGDB 平台)
java·开发语言·c++·python·golang·rust·排序算法
爱吃烤鸡翅的酸菜鱼39 分钟前
【Java】基于策略模式 + 工厂模式多设计模式下:重构租房系统核心之城市房源列表缓存与高性能筛选
java·redis·后端·缓存·设计模式·重构·策略模式
WangY_ZQ1 小时前
eclipse maven 项目 提示 http://maven.apache.org/xsd/maven-4.0.0.xsd‘
java
脸大是真的好~2 小时前
黑马JAVAWeb - Maven高级-分模块设计与开发-继承-版本锁定-聚合-私服
java
pipip.2 小时前
Redis vs MongoDB:内存字典与文档库对决
数据库·redis·缓存