springboot bug实例6

2019-10-25  本文已影响0人  凉风拂面秋挽月

在使用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
上一篇 下一篇

猜你喜欢

热点阅读