You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot整合Caffeine缓存不生效,相同参数仍执行原方法如何解决?

Caffeine缓存不生效的常见原因及解决方案

你贴出的依赖、缓存管理器配置本身没有语法错误,问题基本都出在Spring缓存注解的AOP代理生效条件上,按优先级检查以下几点:

  • 检查业务类是否被Spring容器托管
    你贴出的MyClass代码上没有标注@Service/@Component等Spring托管注解,如果类没有被Spring纳入容器管理,框架不会对类中的缓存注解做任何增强处理,自然不会走缓存逻辑。
  • 检查是否是类内部方法调用
    Spring缓存基于动态代理实现,只有从类外部通过注入的Bean实例调用@Cacheable标注的方法,才会走代理的缓存逻辑。如果你是在MyClass内部的其他方法中直接通过this.cacheableMethod()的方式调用,会绕过代理,注解直接失效。
    解决方法:注入自身实例后调用,或者把被缓存的方法拆分到单独的托管类中。
  • 确认缓存方法的访问修饰符符合要求
    @Cacheable标注的方法必须是public权限,private/protected/default权限的方法上的缓存注解会被Spring直接忽略。
  • 确认CacheManager Bean优先级
    如果项目中存在多个CacheManager类型的Bean,需要给你自定义的Caffeine CacheManager Bean加上@Primary注解,确保缓存逻辑优先使用该配置:
    @Bean
    @Primary
    public CacheManager cacheManager() {
        CaffeineCacheManager cacheManager = new CaffeineCacheManager(CACHE_NAME);
        cacheManager.setCaffeine(caffeineConfig());
        return cacheManager;
    }
    
  • 额外注意配置项含义
    你当前配置的maximumSize(1024 * 1024 * 256)指的是缓存的最大条目数量,不是占用的内存字节数,该配置最多允许存储2亿+条缓存数据,如果你本意是限制内存占用,需要改用maximumWeight配合weigher实现。

内容的提问来源于stack exchange,提问作者dhalfageme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:45:01