Ich habe in letzter Zeit mit Google Guice ein bisschen gehackt und ich kam auf eine Idee, einen String
zu einem Konstruktor entsprechend der Klasse injizieren, in der es deklariert wird und andere Parameter, die in einer Anmerkung definiert sind. Zum Beispiel: Wenn ich definiere eine neue Qualifier Anmerkung @NamedInjectable
von Guice verwendet werden:Wie indexed (und klassenspezifische) Strings injizieren mit Guice
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.PARAMETER })
@Qualifier
public @interface NamedInjectable
{
String name() default "";
boolean indexed() default true;
}
Wo Namen eine neue Namen Basis für die Zeichenfolge (Standard ist nur der Klassenname), und indexed
Staaten, ob Nicht der Name sollte jedes Mal erhöht werden, wenn eine neue Zeichenfolge injiziert wird.
z.B.
public MyClass {
@Inject
public MyClass(@NamedInjectable(name = "foo", indexed = true) String name) {
// some code
}
}
Und name
param sollte einen solchen Wert angegeben werden als " ich mit als Provider Bindungen oder AssistedInject aber ich konnte es getan. Ein Hauptgrund versagt, irgendwie bekommt den Namen der Klasse.
haben Sie eine andere Idee?
Ich finde die Fabrikeinspritzung viel geeigneter für meine Zwecke. Obwohl es wie ein Overkill scheint =) –