- springboot2.0x 和springboot 1.0 整
- 【服务与运维】1.0 centos系统上的nginx搭建
- 【Java中级】36.0 SSM之SpringBoot框架(二)
- 【springboot】 springboot 整合mybati
- SpringBoot 系列教程 MybatisPlus 整合篇
- [SpringBoot][Mybatis]springboot整
- springboot2.0+静态资源访问被拦截问题及登录拦截简单
- Hadoop大数据实战系列文章之安装Hadoop
- 【Java中级】35.0 SSM之SpringBoot框架(一)
- iOS 中常用的几种函数 (向上,向下,四舍五入)取整
问题描述:
在我们深入理解springboot2.0x的缓存机制的时候,发现在springboot1.0 和springboot2.0 中默认的序列化都是使用的jdk的 Serializer 实现这个接口,jdk自带的序列化方法,由此我们需要自己去创建自定义的RedisCacheManager配置类并将自定义的bean组件加入到spring容器中,实现cache的json格式序列化到redis。
解决思路
在springboot1.0中如果向自定义我们直接创建cachemanager 然后传入redistemple模板对象, 就可以实现 redistemple 模板对象中定制序列化。
但是在springboot2.0中,因为RedisCacheManager的构造方式已经发生了改变,我们需要改变以前的繁杂方式,使用统一的模板进行操作。
直接粘贴以下代码,实现自定义的RedisCacheManager配置管理,使得数据以json的形式保存到redis中。
@Configuration
public class MyRedisConfig {
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
RedisCacheConfiguration cacheConfiguration =
RedisCacheConfiguration.defaultCacheConfig()
// 设置缓存管理器管理的缓存的默认过期时间
.entryTtl(Duration.ofDays(1))
// 不缓存空值
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new
GenericJackson2JsonRedisSerializer()));
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();
}
}
网友评论