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

Spring Cache返回空结果且目标方法未执行的问题求助

Spring Cache返回空结果且目标方法未执行的问题求助

嗨,我最近碰到了Spring Cache的一个头疼问题,想请各位大佬帮忙分析分析!

我在一个同步方法上标注了@Cacheable(value = "provider", key = "#providerId"),这个方法的作用是从指定URL拉取Provider数据,代码大概是这样的:

@Cacheable(value = "provider", key = "#providerId")
public synchronized Provider getProviderByProviderId(String providerId, String authorization) {
    // 从URL获取Provider的逻辑
}

但现在的问题是,不管我怎么调用这个方法,它根本就没执行,直接返回空值了。我原本期望的逻辑是:如果传入的providerId是新的,就进入方法去拉取数据;如果缓存里已经有这个providerId对应的记录,就直接返回缓存内容。

我已经试过各种调试手段了:换不同的缓存注解(@Cacheable和@CachePut都试过)、把注解放在方法上或者整个类上,甚至调整了调用层级(直接调用这个方法,或者通过上层方法间接调用),但都没解决问题,还是返回空且方法不执行。

我自己梳理了几个可能的方向,但都没排查出问题:

  • 是不是Spring Cache的代理机制有问题?比如同一个类内部调用导致代理没生效,但如果是这样的话,方法应该会正常执行才对,不会返回空啊?
  • 会不会缓存里已经存了空值?但我明明是第一次调用,按道理缓存里应该什么都没有才对。
  • 同步方法synchronized会不会和Cache注解有冲突?

有没有大佬遇到过类似的情况,或者能给我一些新的排查思路?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 09:04:29