如何在com.google.common.base.Supplier中按需重新加载值

时间:2017-02-16 10:24:02

标签: java caching java-8

我在一个服务中定义了如下供应商。该供应商从数据库加载一些值。

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

我想根据需要在此供应商中重新加载值,以便在时间持续时间(1天)内更新数据库时,这些值将重新加载到供应商中。有什么方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

我不认为这可以通过memoization实现,你需要一个缓存来代替guava。它具有明确使密钥无效的方法。因此,您需要一个数据库触发器/侦听器来捕获某些条目更改时的事件以及何时发生调用:

 Cache.invalidate(key)

然后

cache.put(key, value)