java 如何为依赖注入重构静态函数?

cyej8jka  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(126)

我们有一些遗留代码滥用静态类变量和函数进行缓存。

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的依赖注入,最好的方法是什么?

ozxc1zmp

ozxc1zmp1#

看起来您真正想要的是一个单例对象。
删除所有static关键字,将其转换为示例类,并使用@Singleton作用域注解该类。如果您创建的Component也具有@Singleton作用域,则该组件将只创建一个示例。

相关问题