排定春季缓存驱逐?

问题描述:

是否有可能安排春季缓存驱逐到午夜每天?排定春季缓存驱逐?

我读过Springs Cache Docs,没有发现关于预定缓存逐出的内容。

我需要逐日驱逐缓存,并在应用程序之外发生某些更改时重新缓存缓存。

尝试使用@Scheduled 例子:

@Scheduled(fixedRate = ONE_DAY) 
@CacheEvict(value = { CACHE_NAME }) 
public void clearCache() {  
} 

您也可以使用cron表达@Scheduled。

+0

Scheduled注解如何将自身绑定到CacheEvict注释以了解它应该做什么? –

+0

'@Scheduled'调用方法clearCache指定的时间。 缓存被清理,因为该方法由CacheEvict触发。 请记得在类配置中包含配置@EnableScheduling。 –

弹簧缓存框架是事件驱动的,即仅当调用各个方法时才会触发@Cacheable@CacheEvict

但是,您可以利用底层缓存提供程序(记住Spring缓存框架仅仅是一个抽象,并不提供缓存解决方案本身)使缓存本身无效。例如EhCache有一个属性即。 timeToLiveSeconds决定了直到缓存处于活动状态的时间。但是,除非调用了@Cacheable带注释的方法,否则这不会为您重新填充缓存。

所以对于高速缓存收回并重新人口在特定时刻(说午夜提到)考虑实施在春季背景scheduled service根据需要将触发高速缓存收回并重新人口。预期的行为不是开箱即用的。

希望这会有所帮助。

+0

明天早上我会试一试,并告诉你结果。 –

+0

分享这个方法是否奏效.. –

+0

我有一些其他事情的优先次序,我现在再次讨论这个用例。回复晚了非常抱歉。我马上回来给你答案! –