调用@CacheEvict批注

时间:2019-04-27 16:20:32

标签: spring spring-cache

我知道@CacheEvict在Spring中对缓存的数据执行清理操作,我只想了解::

如果我用@CacheEvict注释一个方法,它会像JSF的@PreDestroy注释那样自动调用吗,即在bean对象被垃圾回收时?

1 个答案:

答案 0 :(得分:1)

@CacheEvict@PreDestroy不同;它不会自动调用。

正如documentation所述,只要调用@CacheEvict带注释的bean方法,就对@CacheEvict进行求值。您可以使用@CacheEviction批注beforeInvocation attribute并控制其他设置,有条件地控制逐出的实际时间以及逐出是在方法执行之前还是之后(默认)。

Spring对@CacheEvict的声明式配置也不与JVM垃圾回收绑定。通常,您需要依靠单个缓存提供程序(例如ehcache,memcached)或更高级的提供程序(例如Apache Geode,Hazelcast或Redis)的功能来配置,调整和控制JVM级别的逐出触发器和操作。

每个提供商在这方面可能具有相似的功能,也可能具有不同的功能。

希望这会有所帮助。