2017-02-16 86 views
1

我有一個供應商在一個服務中定義如下。該供應商從數據庫加載一些值。如何根據需要在com.google.common.base.Supplier上重新加載值

private final Supplier<Map<CustomClass1, CustomClass2>> sampleSupplier = Suppliers.memoizeWithExpiration(getSampleSupplier(), 1, TimeUnit.DAYS); 

我想在這個供應商的需求來重新加載值,因此,如果數據庫的持續時間(1天)內更新,這些值將被重新加載到供應商。有什麼辦法可以做到這一點?

+0

馬克'sampleSupplier'揮發性,並用它替換新實例。 –

回答

0

我不認爲這是可以通過記憶實現,你需要一個緩存而不是番石榴。它具有顯式使密鑰無效的方法。所以,你需要一個數據庫觸發器/監聽器捕獲當一些入門的變化的情況下,當這種情況發生的呼叫:

Cache.invalidate(key) 

然後

cache.put(key, value) 
相關問題