spring boot 项目中redis 序列化异常
当配置好redis配置时候,进行测试redis查询缓存,以下是注解配置下的缓存设置代码:java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type
@Cacheable(value="thisredis", key="'device:obj:'+#dvcNo")
DeviceInfo selectByPrimaryKey(String dvcNo);
关键日志为:
详细报错日志:
org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [com.csii.bean.DeviceInfo] at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.serialize(JdkSerializationRedisSerializer.java:96) at org.springframework.data.redis.serializer.DefaultRedisElementWriter.write(DefaultRedisElementWriter.java:43) at org.springframework.data.redis.serializer.RedisSerializationContext$SerializationPair.write(RedisSerializationContext.java:241) at org.springframework.data.redis.cache.RedisCache.serializeCacheValue(RedisCache.java:238) at org.springframework.data.redis.cache.RedisCache.put(RedisCache.java:144)
异常原因
redis缓存的类没有实现学序列化接口,导致redis序列化失败。
public class DeviceInfo {
private String dvcNo;
private String dvcName;
改为:
public class DeviceInfo implements Serializable {
private String dvcNo;
private String dvcName;
之后经过测试,没有出现以上报错。