我知道@CacheEvict在Spring中对缓存的数据执行清理操作,我只想了解::
如果我用@CacheEvict
注释一个方法,它会像JSF的@PreDestroy
注释那样自动调用吗,即在bean对象被垃圾回收时?
答案 0 :(得分:1)
@CacheEvict
与@PreDestroy
不同;它不会自动调用。
正如documentation所述,只要调用@CacheEvict
带注释的bean方法,就对@CacheEvict
进行求值。您可以使用@CacheEviction
批注beforeInvocation
attribute并控制其他设置,有条件地控制逐出的实际时间以及逐出是在方法执行之前还是之后(默认)。>
Spring对@CacheEvict
的声明式配置也不与JVM垃圾回收绑定。通常,您需要依靠单个缓存提供程序(例如ehcache,memcached)或更高级的提供程序(例如Apache Geode,Hazelcast或Redis)的功能来配置,调整和控制JVM级别的逐出触发器和操作。
每个提供商在这方面可能具有相似的功能,也可能具有不同的功能。
希望这会有所帮助。