在使用springboot+redis+自定义CacheManager来用json格式来序列化javabean的时候出现bug。
其原因在于springboot1.x中是通过
public RedisCacheManager employeeCacheManager(RedisTemplate<Object, Object> RedisTemplate){
RedisCacheManager cacheManager = new RedisCacheManager(RedisTemplate);
return cacheManager;
}
类似这种形式来自定义CacheManager。
如果想使用json序列化,则可调用cacheManager相关属性来完成。
但到了springboot2.x这种方式不可用了,RedisCacheManager的构造方法不存在单一参数的形式。。
正确的写法如下
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory){
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(1))//// 设置缓存有效期一天,如果想设置一小时可以用Duration.ofHours(1)
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();
}
通过redis+json的形式缓存我们的查询数据
image.png
网友评论