我在一个服务中定义了如下供应商。该供应商从数据库加载一些值。
private final Supplier<Map<CustomClass1, CustomClass2>> sampleSupplier = Suppliers.memoizeWithExpiration(getSampleSupplier(), 1, TimeUnit.DAYS);
我想根据需要在此供应商中重新加载值,以便在时间持续时间(1天)内更新数据库时,这些值将重新加载到供应商中。有什么方法可以实现这个目标吗?
答案 0 :(得分:0)
我不认为这可以通过memoization实现,你需要一个缓存来代替guava。它具有明确使密钥无效的方法。因此,您需要一个数据库触发器/侦听器来捕获某些条目更改时的事件以及何时发生调用:
Cache.invalidate(key)
然后
cache.put(key, value)