【发布时间】:2019-04-27 16:20:31
【问题描述】:
我知道@CacheEvict 对Spring中的缓存数据执行清理操作。我只是想了解::
如果我用@CacheEvict 注释一个方法,它是否会像JSF 的@PreDestroy 注释一样自动调用。即在bean 对象被垃圾收集时?
【问题讨论】:
标签: spring spring-cache
我知道@CacheEvict 对Spring中的缓存数据执行清理操作。我只是想了解::
如果我用@CacheEvict 注释一个方法,它是否会像JSF 的@PreDestroy 注释一样自动调用。即在bean 对象被垃圾收集时?
【问题讨论】:
标签: spring spring-cache
@CacheEvict 不像@PreDestroy;它不会自动调用。
正如documentation 所描述的,@CacheEvict 在任何时候调用@CacheEvict 带注释的bean 方法时都会被评估。您可以使用@CacheEviction 注释、beforeInvocation attribute 以及控制其他设置,有条件地控制驱逐实际发生的时间,以及驱逐发生在方法执行之前还是之后(默认)。
Spring 对@CacheEvict 的声明性配置也与 JVM 垃圾回收无关。通常,您需要依赖单个缓存提供程序(例如 ehcache、memcached)或更高级的提供程序(例如 Apache Geode、Hazelcast 或 Redis)的功能来配置、调整和控制 JVM 级别的驱逐触发器和操作.
每个提供商在这方面可能具有相似但也不同的能力。
希望这会有所帮助。
【讨论】: