相关疑难解决方法(0)

Dagger:注入@Named字符串?

编辑 2018-02-08:示例项目演示如何在https://github.com/ravn/dagger2-named-string-inject-example执行此操作- 注意:整个源代码在一个文件中!


我正在研究dagger是否能为我们取代guice(因为我们的部署Java平台很慢).

我在运行时构建了配置字符串的映射,我希望根据需要使用dagger.

如果我有

java.util.Map<String, String> map = new java.util.TreeMap<String, String>();
map.put("key", "value");
Run Code Online (Sandbox Code Playgroud)

@Inject
Thermosiphon(Heater heater, @Named("key") String value) {
    this.heater = heater;
    System.out.println("value =" + value);
}
Run Code Online (Sandbox Code Playgroud)

我希望注入价值"价值".

源代码中的示例没有任何@Named用法.只是尝试给出以下异常:

Exception in thread "main" java.lang.IllegalStateException: Errors creating object graph:
  No binding for @javax.inject.Named(value=key)/java.lang.String required by class bar.Thermosiphon
    at dagger.internal.ThrowingErrorHandler.handleErrors(ThrowingErrorHandler.java:34)
    at dagger.internal.Linker.linkRequested(Linker.java:146)
    at dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:288)
    at dagger.ObjectGraph$DaggerObjectGraph.get(ObjectGraph.java:249)
    at app.CoffeeApp.main(CoffeeApp.java:20)
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

dependency-injection dagger

19
推荐指数
2
解决办法
2万
查看次数

标签 统计

dagger ×1

dependency-injection ×1