2017-03-09 80 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

我有一些其他事情的優先次序,我現在再次討論這個用例。回覆晚了非常抱歉。我馬上回來給你答案! –