我们有一些遗留代码滥用静态类变量和函数进行缓存。
public class MetaDataCache {
static LoadingCache<String, GcsMetadata> metadataCache;
// initial set up on server start up
public static void setup(Config config){
metadataCache =
CacheBuilder.newBuilder()
.refreshAfterWrite(30, TimeUnit.SECONDS)
.build(getCacheLoader());
}
// load and reload the cache
private static CacheLoader<String, GcsMetadata> getCacheLoader() {}
// access cache and get value
public static GcsMetadata getMetaData(String key) {
return metadataCache.get(key);
}
}
public class Application {
public static void main(){
MetaDataCache.setup(config);
MetaDataCache.getMetaData("cacheKey");
}
}
现在我尝试重构MetaDataCache类,以避免使用静态函数进行Dagger2的依赖注入,最好的方法是什么?
1条答案
按热度按时间ozxc1zmp1#
看起来您真正想要的是一个单例对象。
删除所有
static
关键字,将其转换为示例类,并使用@Singleton
作用域注解该类。如果您创建的Component
也具有@Singleton
作用域,则该组件将只创建一个示例。