摘要: Spring Boot 从1.5.x升级到2.0,其中有些变化,如果不注意就会跳坑。在Redis模块,从1.5.x升级到2.0,如果不注意其中的变化,就会碰到CacheManager配置的变化。
在Spring Boot 1.5.x之前,Redis模块的配置已经有很多教程和例子了,比如纯洁的微笑的博客还有程序猿DD的博客。
SpringBoot1.5x之前,Redis配置如下:
@Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport {
@Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
return redisCacheManager;
}
}
这是分割线============================================
SpringBoot2.0的cache config变化很大, 普遍使用了build模式。
@Bean public CacheManager cacheManager(RedisConnectionFactory connectionFactory) { RedisCacheManager redisCacheManager = RedisCacheManager.builder(connectionFactory).build(); return redisCacheManager; }
/** * @Description: 防止redis入库序列化乱码的问题 * @return 返回类型 * @date 2018/4/12 10:54 */ @Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer());//key序列化 redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Object.class)); //value序列化 redisTemplate.afterPropertiesSet(); return redisTemplate; }
至于redis一些封装操作,就不多赘述了。