Spring FactoryBean und Scopes arbeiten zusammen

8

Ich möchte FactoryBeans und Bereiche zusammen verwenden. Insbesondere möchte ich, dass das von einer FactoryBean erstellte und zurückgegebene Objekt in einen bestimmten (möglicherweise benutzerdefinierten) Bereich gestellt wird. Das Problem besteht darin, Folgendes zu tun:

%Vor%

Die Ergebnisse in der FactoryBean selbst werden erfasst und haben ein etwas unvorhersehbares Verhalten auf dem von der Factory erstellten Objekt. Ich verstehe, warum das so ist; Die Fabrik selbst ist eine erstklassige federgeführte Bohne und hat ihren eigenen Lebenszyklus. Allerdings kann ich keinen Weg finden, anzugeben, dass das Objekt, das von der Fabrik zurückgegeben wird, selbst ein Bereich sein sollte.

Auf der anderen Seite macht dies genau das, was ich will (solange TestFactoryBean die FactoryBean-Schnittstelle NICHT implementiert):

%Vor%

Die eigentliche Frage ist also, wie kann ich Spring so verhalten, wie es für das zweite Beispiel oben ist, aber echte FactoryBeans verwenden?

    
TTar 13.05.2010, 21:11
quelle

2 Antworten

6

Sie können nicht einfach einen benutzerdefinierten Bereich für eine Bean verwenden, die von FactoryBean zurückgegeben wurde.

Aus der Java-Dokumentation :

  

FactoryBeans kann Singletons und Prototypen unterstützen

Wenn Sie möchten, dass die zurückgegebene Bean FactoryBean den Prototypbereich hat, müssen Sie die Methode isSingleton() wie folgt implementieren:

%Vor%

Um einen benutzerdefinierten Bereich zu unterstützen, müssen Sie die Logik selbst implementieren und es wird nicht sehr intuitiv sein, da FactoryBean nur die Methode isSingleton() bereitstellt. Ich empfehle eher, eine andere Lösung als FactoryBean für Beans mit benutzerdefiniertem Bereich zu verwenden.

Hoffe, das hilft!

    
Espen 13.05.2010, 23:06
quelle
2

Ich habe das gleiche Problem mit der benutzerdefinierten Halter Bean gelöst.

Factory-Bean:

%Vor%

Bohnenhalter:

%Vor%

Und dann benutze ich Halter anstelle der erforderlichen Einheit.

%Vor%

Die Lösung sieht ein bisschen hässlich aus, aber dennoch löst sie das Problem.

    
uthark 30.12.2011 05:17
quelle

Tags und Links