【发布时间】:2018-02-02 01:29:40
【问题描述】:
我开发了一种使用@Cacheable 注释的方法。代码是:
@Cacheable(value="reporties" , key="{#root.methodName,#manager.name}")
public List<Employee> getReportiesForManager(Employee manager){
// code to fetch reporties its a Spring JDBC call
}
现在,我想在一些事件之后驱逐这个缓存:
- 一些与经理相关的报告已更新(添加或删除)。
之后,与管理器相关的缓存应该被驱逐,这样,应用程序将获取新数据,而不是使用该缓存中现有的数据。我为此开发了以下方法:
@CacheEvict(value="reporties",key="{#name}")
public void evictReportiesCache(String name){}
我在方法内部调用了更新经理及其报告人的关系。但是,这一个间歇性地工作,我不确定这是否是驱逐缓存的正确方法。 Cacheable 还使用#root.methodName 作为键的一部分。
有人可以帮我解决这个缓存驱逐问题吗?
【问题讨论】: