Dolch: @Named Strings injizieren?
BEARBEITEN 2018-02-08: Beispielprojekt, in dem gezeigt wird, wie dies unter durchgeführt wirdhttps://github.com/ravn/dagger2-named-string-inject-example - Hinweis:Die gesamte Quelle befindet sich in einer einzigen Datei!
Ich überlege, ob Dolch uns ersetzen kann (da unsere Java-Plattform nur langsam bereitgestellt wird).
Ich erstelle zur Laufzeit eine Karte mit Konfigurationszeichenfolgen, die ich bei Bedarf mit Dolch injizieren lassen möchte.
Z.B. Wenn ich habe
java.util.Map<String, String> map = new java.util.TreeMap<String, String>();
map.put("key", "value");
und
@Inject
Thermosiphon(Heater heater, @Named("key") String value) {
this.heater = heater;
System.out.println("value =" + value);
}
Ich möchte "Wert" in Wert injizieren lassen.
Die Beispiele im Quellcode enthalten keine @Named-Verwendungen. Wenn Sie nur versuchen, gibt es die folgende Ausnahme:
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)
Wie soll ich das angehen?