Spring Boot2.0使用Redis的一些解决心得

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

猜你喜欢

转载自my.oschina.net/u/3209432/blog/1794416