开发者社区 问答 正文

spring boot 配置redis缓存 : 配置报错

用spring boot 配置redis缓存时报错如下:

java.lang.IllegalStateException: No CacheResolver specified, and no unique bean of type CacheManager found. Mark one as primary (or give it the name 'cacheManager') or declare a specific CacheManager to use, that serves as the default one.

有哪位大神有遇到类似异常信息的,可否提供解决方案?

展开
收起
kun坤 2020-06-03 15:42:37 906 分享 版权
1 条回答
写回答
取消 提交回答
  • 这个是不是你的配置文件有重复啊######没有,根本就没有配置文件######http://git.oschina.net/iBase4J/iBase4J######回复 @lyz宇 : 使用bean注解是类似的######谢谢提供资源,这个是springmvc中的应用,在spring boot中这么用比较被动,并且spring boot中是没有xml配置文件的######需要设置 CacheManager ###### @Configuration
    @EnableCaching
    public class RedisConfig extends CachingConfigurerSupport {

    @Bean  
        public RedisTemplate<String, AccessToken> redisTemplate(RedisConnectionFactory cf) {  
            RedisTemplate<String, AccessToken> redisTemplate = new RedisTemplate<String, AccessToken>();  
            redisTemplate.setConnectionFactory(cf);  
            return redisTemplate;  
        }  
      
        @Bean  
        public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) {  
            RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);  
            cacheManager.setDefaultExpiration(7200);
            return cacheManager;  
        }  

    @Bean
    public KeyGenerator iKeyGenerator() {
    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();
    }
    };
    }
    } ######谢谢你的技术提供,这种方式可以使用成功,但不能通用

    2020-06-05 13:36:03
    赞同 展开评论