2017-02-16 50 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) 
相关问题