Muk*_*esh 5 java spring caching
我开发了一种使用@Cacheable注释的方法。代码是:
@Cacheable(value="reporties" , key="{#root.methodName,#manager.name}")
public List<Employee> getReportiesForManager(Employee manager){
// code to fetch reporties its a Spring JDBC call
}
Run Code Online (Sandbox Code Playgroud)
现在,我想在发生一些事件后驱逐此缓存:
之后,与管理器相关的缓存应该被驱逐,这样应用程序将获取新的数据,而不是使用该缓存中现有的数据。我为此开发了以下方法:
@CacheEvict(value="reporties",key="{#name}")
public void evictReportiesCache(String name){}
Run Code Online (Sandbox Code Playgroud)
我在更新管理器及其报告者关系的方法内部调用。然而,这个间歇性地工作,我不确定这是否是逐出缓存的正确方法。Cacheable 也用作#root.methodName密钥的一部分。
有人可以帮我清除缓存吗?
您可以将缓存视为Map<key, value>.
每次您使用注释调用方法时,@Cacheable您都会在注释中写入Map与您定义的键相关联的值。
每次使用注释调用方法时,@CacheEvict都会删除与该键关联的值。您还可以删除地图中的所有条目。