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
早年同窗始相知,三载瞬逝情却萌。年少不知愁滋味,犹读红豆生南国。别离方知相思苦,心田红豆根以生。