2017-02-16 15 views
1

私は以下のようにサービス内で定義されたサプライヤを有しています。このサプライヤーは、データベースからいくつかの値をロードします。ご注文時にcom.google.common.base.Supplierの値を再ロードする方法

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

私は、データベースが継続時間(1日)以内に更新されている場合、それらの値は、サプライヤーに再ロードされるように、必要に応じてこのサプライヤーの値をリロードします。私はこれを達成する方法はありますか?

+0

マーク 'sampleSupplier'をし、それを置き換えます新しいインスタンス。 –

答えて

0

私はこれをmemoizationによって達成できるとは思わないが、guavaの代わりにキャッシュが必要です。明示的にキーを無効にするメソッドがあります。だから、それがコールを発生したときに、いくつかのエントリの変更とするときのイベントをキャッチするデータベース・トリガー/リスナー必要があります:揮発性として

Cache.invalidate(key) 

、その後

cache.put(key, value) 
関連する問題