【发布时间】:2017-10-14 17:18:14
【问题描述】:
我有一个获取所有数据的方法,我正在缓存该方法的结果,但我无法驱逐结果。
@Component("cacheKeyGenerator")
public class CacheKeyGenerator implements KeyGenerator {
@Override
public Object generate(Object target, Method method, Object... params) {
final List<Object> key = new ArrayList<>();
key.add(method.getDeclaringClass().getName());
return key;
}
}
缓存方法:-
@Override
@Cacheable(value="appCache",keyGenerator="cacheKeyGenerator")
public List<Contact> showAllContacts() {
return contactRepository.findAll();
}
@Override
@CachePut(value="appCache",key="#result.id")
public Contact addData(Contact contact) {
return contactRepository.save(contact);
}
现在,当调用 addData 时,我希望将缓存“appCache”中键为“cacheKeyGenerator”的数据逐出。这样,“showAllContacts()”方法返回的数据是准确的。谁能帮忙!
【问题讨论】:
-
使用另一种方法
@CacheEvict删除缓存条目?这就是你要找的吗? -
查看您当前的实现会引发一个问题:您是否希望在调用
add(...)时驱逐缓存,因为您显式调用了空(但带注释的)方法evictCache()?
标签: spring spring-boot ehcache spring-cache