如何从findAll方法的缓存中删除特定的对象?
我有findAll方法,它返回我DB中的所有对象并将其缓存。 但是当我更新某个对象时,我想更新缓存中的那个元素。 但在我的findAll不知道如何与键映射:如何从findAll方法的缓存中删除特定的对象?
@Cacheable("findAllStudens")
public Collection<StudensImpl> findAll()
当我更新学生,我想更新缓存,但仅适用于该元素。 有人有同样的问题吗?
必须使用注解@CachePut您的更新方法,像这样:
@CachePut(cacheNames = "findAllStudens")
public void update(StudensImpl studensImpl) {
...
}
您需要更新方法之前添加@CacheEvict(“findAllStudens”)标注
CacheEvict注释将删除来自现有缓存的数据。下一次调用findAll()方法中的代码将被执行,并且返回的列表将被存储在缓存中
是的,但这是删除整个findAllStudens缓存? –
我从来没有使用它,但似乎@CachePut正在做的工作(菲利普答案)http://websystique.com/spring/spring-4-cacheable-cacheput-cacheevict-caching-cacheconfig-enablecaching-tutorial/ –
@ cachePut将用新值重写缓存,因为该键是方法的名称,值是新对象。 –
这是仅更新缓存中的那个对象的方式吗? –