2017-10-19 85 views
-1

我有findAll方法,它返回我DB中的所有对象并将其缓存。 但是当我更新某个对象时,我想更新缓存中的那个元素。 但在我的findAll不知道如何与键映射:如何从findAll方法的缓存中删除特定的对象?

@Cacheable("findAllStudens") 
public Collection<StudensImpl> findAll() 

当我更新学生,我想更新缓存,但仅适用于该元素。 有人有同样的问题吗?

回答

0

必须使用注解@CachePut您的更新方法,像这样:

@CachePut(cacheNames = "findAllStudens") 
public void update(StudensImpl studensImpl) { 
... 
} 
+0

这是仅更新缓存中的那个对象的方式吗? –

0

您需要更新方法之前添加@CacheEvict(“findAllStudens”)标注

CacheEvict注释将删除来自现有缓存的数据。下一次调用findAll()方法中的代码将被执行,并且返回的列表将被存储在缓存中

+0

是的,但这是删除整个findAllStudens缓存? –

+0

我从来没有使用它,但似乎@CachePut正在做的工作(菲利普答案)http://websystique.com/spring/spring-4-cacheable-cacheput-cacheevict-caching-cacheconfig-enablecaching-tutorial/ –

+0

@ cachePut将用新值重写缓存,因为该键是方法的名称,值是新对象。 –

相关问题