Ich versuche Sinn des folgenden Anbieter zu machen:Wie funktioniert ein Guice-Provider, der als Identitätsfunktion implementiert ist?
@Provides
@ScopeMatching
@MatchingScopeAnnotation
MatchingBag provideBag(MatchingBag bag) {
return bag;
}
Hier sind die Erklärungen der referenzierten Anmerkungen:
@BindingAnnotation
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface ScopeMatching {
// nothing
}
@ScopeAnnotation
@Target({ TYPE, METHOD })
@Retention(RUNTIME)
private @interface MatchingScopeAnnotation {
// nothing
}
seltsame Blicke, einen Anbieter zu definieren, die nur eine Identitätsfunktion ist. Ich kann sehen, dass das Löschen des Anbieters zu Fehlern bei der Eingabe führt.
Können Sie mir bitte helfen zu verstehen, was die Wirkung des Anbieters ist? Ist es nicht ein Henne-Ei-Problem, um den Anbieter zu lösen? Wie macht es Guice?
Ich vermute, dass es einen anderen Anbieter gibt, oder eine automatische Singleton mit einer der beiden Annotationen annotiert und diese Funktion bietet diese 'bag' Bindung an die Konstruktoren kommentiert mit der Bereich Annotation dieser Funktion. – dlamblin
Ja, MatchingBag hat einen Konstruktor: @Inject MatchingBag (Config-Konfiguration) (wir können davon ausgehen, dass Guice weiß, wie die Config-Klasse aufgebaut wird). Beachten Sie, dass diese Konstruktoren nicht mit Bereichen versehen sind. –