使用Spring Cache时出现的常见异常处理:DefaultSerializer requires a Serializable payload but received an object of type

错误信息: java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [com.sky.pojo.Student]

错误分析:

  • Redis 默认的序列化器(如 JdkSerializationRedisSerializer)期望接收一个实现了 Serializable 接口的对象,但接收到的是一个未实现该接口的 类对象。
  • 类未实现 Serializable 接口:类没有实现 Serializable 接口,导致默认的 Java 序列化无法处理该对象。
  • 序列化配置不正确:即使 实现了 Serializable 接口,如果使用了其他序列化方式(如 JSON 序列化),也需要确保配置正确。

解决方案:

  • 确保类实现 Serializable
  • 配置正确的序列化方式,如果你不想使用 Java 的原生序列化,可以配置 Redis 使用其他序列化方式,如 JSON 序列化。
  • 检查缓存注解和使用,确保在使用 @Cacheable、@CachePut 或 @CacheEvict 注解时,传递的对象类型是可序列化的。
posted @ 2025-02-26 15:26  zhangfff  阅读(401)  评论(0)    收藏  举报