Cannot resolve constructor 'RedisCacheManager(org.springframework.data.redis.core.RedisTemplate)' 或springboot2.x 的 RedisCacheManager变化

1、最近在学习spring boot+redis有关的问题,但是在学习的时候莫名的遇到了一个问题:Cannot resolve constructor 'RedisCacheManager(org.springframework.data.redis.core.RedisTemplate)。这就很难受了问题如下图所示:

经过百度,谷歌的搜索,我发现我的spring boot的版本是2x以上的版本,搜索的时候发现  在springboot2.x中,RedisCacheManager已经没有了单参数的构造方法。我上边的方法是适用于springboot 1.x版本的。

解决方法①: 降低springboot版本 (不推荐,因为一直停留在旧版)

解决方法② 使用2.0以上方法

//    2.0以下写法
//    @SuppressWarnings("rawtypes")
//    @Bean
//    public CacheManager cacheManager(RedisTemplate redisTemplate) {
//        RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
//        //设置缓存过期时间
//        //rcm.setDefaultExpiration(60);////        return rcm;
//    }

    //2.0以上写法
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
        RedisCacheManager rm = RedisCacheManager.create(connectionFactory);
        /*rm.setDefaultExpiration(30L);// 设置缓存时间*/
        return rm;
    }

或者

@Bean
    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofHours(1)); // 设置缓存有效期一小时
        return RedisCacheManager
                .builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
                .cacheDefaults(redisCacheConfiguration).build();
    }

 

springboot2.x 的 RedisCacheManager变化

参考这个链接:https://blog.csdn.net/Mirt_/article/details/80934312

 

posted @ 2021-08-17 16:31  山河永慕~  阅读(719)  评论(0编辑  收藏  举报