【发布时间】:2019-12-05 02:14:16
【问题描述】:
可能这些问题似乎与其他问题重复,但我已经检查了其他类似问题并尝试了解决方案,但没有任何效果。
我有一个使用缓存注释注释的服务类,如下所示:
@Service
@CacheConfig(cacheNames={"ReqCache"})
public class ReqCache implements CacheFacade{
@Autowired
RequestRepository requestRepo;
@Cacheable
public Request getRequest(String sessionId) {
System.out.println("in cache comp");
return requestRepo.get(sessionId);
}
@CachePut(value = "ReqCache", key = "#p0.sessionId")
public void addRequest(Request request, int partition) {
requestRepo.add(lterequest,partition);
}
}
我在另一个服务类中自动装配 CacheFacade。 当我从该类调用 addRequest 时,它可以工作,但是当我调用 getRequest 时,它没有被调用,我尝试在那里添加记录器和调试点,但流程没有去那里。
这是我调用缓存服务类的主要服务类:
@Service
public class RequestHandler {
@Autowired
CacheFacade cacheFac;
}
谁能告诉我我做错了什么以及为什么@cacheput 有效但@cacheable 方法没有被调用。
提前致谢
【问题讨论】:
-
你试过
@Cacheable(value = "ReqCache")吗? -
那结果呢,是否正确,有没有异常?
-
在 Springboot 中,
@Cacheable注释告诉 spring 缓存这些结果(仅当注释的方法是该服务中第一个被调用的方法时)......我假设它不允许你在那里调试,因为它正在读取缓存的结果?它缓存返回的值,而不是整个函数 -
@michael 是的,我也试过了..但没用
-
@shadow 它只是给出 null...即使 db 有结果
标签: java spring-boot caching redis