【发布时间】:2013-08-07 09:38:25
【问题描述】:
编辑 2018-02-08:在https://github.com/ravn/dagger2-named-string-inject-example 演示如何执行此操作的示例项目 - 注意:the whole source is in a single file!
我正在研究 dagger 是否可以代替我们的 guice(因为我们部署 Java 平台很慢)。
我在运行时构造了一个配置字符串映射,我希望根据需要进行 dagger 注入。
例如如果我有
java.util.Map<String, String> map = new java.util.TreeMap<String, String>();
map.put("key", "value");
和
@Inject
Thermosiphon(Heater heater, @Named("key") String value) {
this.heater = heater;
System.out.println("value =" + value);
}
我想在价值中注入“价值”。
源代码中的示例没有任何@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)
我应该如何处理这个问题?
【问题讨论】:
标签: dependency-injection dagger