我有一个类使用静态缓存,该静态缓存在类的所有实例之间共享。我希望能够在运行时设置缓存超时。使用命令行参数初始化静态缓存
提供一个具体的用例:我缓存从云存储中获取的值。我想在开发环境中比在prod中更快地刷新值。部署代码时,它会为与该环境相对应的配置文件提供参数。此配置文件可以包含缓存刷新时间的值。
public class Pipeline {
private static final LoadingCache<BlobId, Definitions> CACHE =
CacheBuilder.newBuilder()
.refreshAfterWrite(VALUE, TimeUnit.MINUTES) // <-- how do I set VALUE from a config file?
.build(
new CacheLoader<BlobId, Definitions>() {
public Definitions load(BlobId key) throws Exception {
return DefinitionsLoader.load(key);
}
});
...
}