Ich möchte Singleton-Abhängigkeiten in Prototyp Spring Beans wiedereinführen, nachdem sie deserialisiert wurden.wie Singleton wieder anfügen Spring Bohnen nach Deserialisierung
Angenommen, ich habe eine Process-Bean, die von einer Repository-Bean abhängt. Die Repository-Bean ist ein Bereich wie ein Singleton, aber die Process-Bean ist ein Prototyp-Bereich. Periodisch serialisiere ich den Prozess und deserialisiere ihn später.
class Process {
private Repository repository;
// getters, setters, etc.
}
Ich möchte das Repository nicht serialisieren und deserialisieren. Ich möchte auch nicht "transient" auf die Membervariable setzen, die in Process einen Verweis darauf enthält, noch einen Verweis auf eine Art von Proxy oder etwas anderes als eine einfache alte Membervariable, die als Repository deklariert ist.
Was ich denke, ich möchte, dass der Prozess seine Abhängigkeit mit einem serialisierbaren Proxy gefüllt hat, der (mit einer vorübergehenden Referenz) auf das Repository zeigt und bei der Deserialisierung das Repository wieder finden kann. Wie könnte ich Spring dazu anpassen?
Ich glaube, ich könnte einen Proxy verwenden, um die Abhängigkeit Referenzen, ähnlich wie. Ich wünschte, ich könnte diese genaue Technik anwenden. Aber der Proxy, den ich Spring erzeugt habe, ist nicht serialisierbar, und die Dokumente sagen, dass ich eine Ausnahme bekomme, wenn ich sie mit einer Singleton-Bean verwende.
Ich könnte vielleicht einen benutzerdefinierten Bereich für die Singleton-Beans verwenden, der immer einen Proxy liefert, wenn er nach einer benutzerdefinierten Bean gefragt wird. Ist das eine gute Idee? Andere Ideen?
In welchem Anwendungskontext befinden sich diese Beans? Ein Webapp-Kontext? – skaffman
Derzeit kein Webapp-Kontext. Später wäre wahrscheinlich ein Webapp-Kontext. – Ladlestein
In diesem Fall, wie wird der Kontext bootstrapped? Ist es eine Desktop-Anwendung? – skaffman