springboot2.x后对于CacheManager的源码进行了改动,1.x版本自定义CacheManager方法不再适用,以下是本人配置的CacheManager
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, Employee> empRedisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Employee> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Employee> serializer = new Jackson2JsonRedisSerializer<Employee>(Employee.class);
template.setDefaultSerializer(serializer);
return template;
}
@Bean
public RedisTemplate<Object, Department> deptRedisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Department> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Department> serializer = new Jackson2JsonRedisSerializer<Department>(Department.class);
template.setDefaultSerializer(serializer);
return template;
}
@Bean
@Primary //将某个缓存管理器作为默认的,
public CacheManager empCacheManager(RedisConnectionFactory factory) {
Jackson2JsonRedisSerializer<Employee> serializer = new Jackson2JsonRedisSerializer<Employee>(Employee.class);
RedisCacheConfiguration cacheConfiguration =
RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(1))
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer));
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();
}
@Bean
public CacheManager deptCacheManager(RedisConnectionFactory factory) {
Jackson2JsonRedisSerializer<Department> serializer = new Jackson2JsonRedisSerializer<Department>(Department.class);
RedisCacheConfiguration cacheConfiguration =
RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofDays(1))
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer));
return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();
}
}
前面两个bean是对RedisTemplate重新定义了序列化规则,后面两个bean针对
defaultCacheConfig,做出自定义的设置,
[SpringBoot版本 2.3.0 JDK 1.8 IDEA环境 redis采用dockerHub最新镜像启动]
亲测有效!!!
本文介绍了在SpringBoot 2.2.x版本中,由于源码改动,1.x版本的自定义CacheManager方法不再适用。作者分享了自己配置的CacheManager,包括如何对RedisTemplate进行序列化规则的重新定义,以及针对defaultCacheConfig的自定义设置。测试环境为SpringBoot 2.3.0,JDK 1.8,IDEA,并使用dockerHub最新镜像启动Redis。
225

被折叠的 条评论
为什么被折叠?



