首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置Config的播种匕首2厂

配置Config的播种匕首2厂
EN

Stack Overflow用户
提问于 2020-06-03 19:38:57
回答 1查看 172关注 0票数 0

我刚刚开始使用Dagger &依赖项注入,并想知道一些低级依赖项在运行时的配置。是否有一种方法可以在运行时为配置对象提供低级别注入的Singleton?

我想要的基本概念是:

代码语言:javascript
复制
@Singleton
class DatabaseService {
   @Inject
   public DatabaseService(DatabaseConnectionConfig config) { // how can this arg be passed in at runtime?
      // make the connection
   }
}

@Singleton
class HighLevelService {
   @Inject
   public HighLevelService(DatabaseService db) {
   }
}

@Module
class Module {
  @Binds
  abstract HighLevelService bindHighLevelService(HighLevelService svc);

  @Binds
  abstract DatabaseService bindDatabaseService(DatabaseService svc);
}


@Singleton
@Component(modules = {
    Module.class
})
interface Factory {
  HighLevelService highLevelService();

  static Factory create() {
    return DaggerFactory.create();
  }
}

public class App {
  public static void main(String[] args) {
    // get the config details from the arguments
    DatabaseConnectionConfig config = parseDBConfigFromArgs(args);
    // is there a way to configure the DatabaseConnectionConfig from here?
    HighLevelService svc = Factory.create().highLevelService();
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 20:32:04

您可以将@Component.Factory (或@Component.Builder)与@BindsInstance一起使用。

代码语言:javascript
复制
@Singleton
@Component
interface Factory {
    HighLevelService highLevelService();

    // This nested interface is typically called "Factory", but I
    // don't want to look up how to access Factory from Factory.Factory
    @Component.Factory
    interface MyFactory {
        Factory create(@BindsInstance DatabaseConnectionConfig config);
    }

    static Factory create(DatabaseConnectionConfig config) {
        return DaggerFactory.factory().create(config);
    }
}

public class App {
  public static void main(String[] args) {
    DatabaseConnectionConfig config = parseDBConfigFromArgs(args);

    HighLevelService svc = Factory.create(config).highLevelService();
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62181347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档