Ist es möglich und wie wird die assistierte Injektion im Frühling durchgeführt?

8

In Guice 2 oder 3 gibt es so genannte Assisted / Partial Inject, die hier beschrieben werden. Mit Guice synthetisiert die Factory-Implementierung (die meine Schnittstelle implementiert) für mein Objekt und einige der Konstruktorargumente werden von Guice injiziert und einige werden aus dem Kontext bereitgestellt.

Ist es möglich und wie macht man das Gleiche mit Spring?

    
Op De Cirkel 03.06.2011, 02:41
quelle

2 Antworten

7

Folgendes tut genau das, wonach ich gefragt habe. Obwohl es die Implementierung der Factory nicht synthetisiert, ist es gut genug, da die Factory Zugriff auf den Injektionskontext hat, so dass andere Beans (injizierbare Artefakte) verwendet werden können Konstruktion. Es verwendet Java-basierte @Configuration anstelle von XML, aber es wird auch mit XML arbeiten.

Die Fabrikschnittstelle:

%Vor%


%Vor%

// Dies ist die Spring-Konfiguration, die zeigt, wie man die assistierte Injektion macht

%Vor%

Der Testcode:

%Vor%

Damit wird genau das erreicht, was Guice macht. Der knifflige Unterschied ist der Scope . Der Standardbereich von Spring ist Singleton und Guice ist nicht (es ist ein Prototyp).

    
Op De Cirkel 09.12.2012, 02:21
quelle
4

AFAIK können Sie nicht. Im Frühjahr können Sie Instantiierung mit a statische Fabrikmethode oder Instanziierung mithilfe einer Instanz-Factory-Methode . Mit der zweiten Option können Sie eine Bean myFactoryBean definieren, die als Factory für eine andere Bean arbeitet. Sie können auch Konstruktionsargumente an myFactoryBean übergeben, indem Sie constructor-arg verwenden (siehe zum Beispiel den Abschnitt Verwenden einer Instanz Factory-Methode in diesem Blog ), die Ihnen das Äquivalent von Guice-injizierten Argumente. Ich kenne jedoch keine Möglichkeit, beim Aufruf der Factory-Methode weitere Argumente aus dem Kontext bereitzustellen.

    
MarcoS 03.06.2011 08:04
quelle