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?
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:
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!