2017-03-09 74 views

回答

5

尝试使用@Scheduled 例子:

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

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

+0

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

+0

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

1

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

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

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

希望这会有所帮助。

+0

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

+0

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

+0

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