将@cacheEvict和@Cacheable一起调用Spring

时间:2013-12-31 08:48:03

标签: caching ehcache spring-annotations spring-cache

这可能很简单,但我想知道我是否可以在一个方法上一起调用@Cacheable和@CacheEvict,如下所示:

@Cacheable(value = "empListCache")
@CacheEvict(value = "empListCache", allEntries = true)
public List<Emply> findAllEmplys() throws SomeException

上面的代码是每次调用方法时都会逐出empListCache,还是只在缓存满了时被驱逐?

感谢。

1 个答案:

答案 0 :(得分:1)

你准备做什么?是的,你可以这样做,但这基本上完全违背了缓存的目的。

@CacheEvict默认情况下方法调用后运行。因此,上面的声明将使用相同的密钥缓存列表(因为您的方法没有参数),然后完全清除缓存。

长话短说:如果你删除了两个注释,你会得到完全相同的结果(除了缓存“emptyListCache”没有被清除)。