摘要: 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一些封装操作,就不多赘述了。