1. 程式人生 > 其它 >Cannot resolve constructor 'RedisCacheManager(org.springframework.data.redis.core.RedisTemplate)' 或springboot2.x 的 RedisCacheManager變化

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

早年同窗始相知,三載瞬逝情卻萌。年少不知愁滋味,猶讀紅豆生南國。別離方知相思苦,心田紅豆根以生。