遇到如下报错:
java.lang.ClassCastException: org.apache.shiro.authc.SimpleAuthenticationInfo cannot be cast to java.lang.String
......
at com.example.demo.config.cache.RedisCache.put(RedisCache.java:44) ~[classes/:na]
......
定位到了代码
public class RedisCache<k,v> implements Cache<k,v> {
......
@Override
public v put(k k, v v) throws CacheException {
System.out.println("put key: "+ k);
System.out.println("put value: "+ v);
getRedisTemplate().opsForHash().put(this.cacheName,k.toString(),v);
return null;
}
......
}
原因分析:
传入的V 对象无法转换为String
检查了下 RedisTemplate
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
redisTemplate.setHashValueSerializer(stringRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
因为是CV其它项目的代码,忘记更改了。
代码删掉即可解决
redisTemplate.setHashValueSerializer(stringRedisSerializer);