Der Unterschied zwischen Spring -Singleton -Bohnen und Singleton -Mustern besteht darin, dass sie mit verschiedenen Umgebungen verbunden sind. Singleton -Muster beziehen sich auf nur eine Instanz in einem JVM -Prozess, während Spring Singleton nur auf eine Instanz in einem Frühlingsbohnencontainer (ApplicationContext) bezieht.
Schauen Sie sich zunächst das Singleton -Muster an. In einem JVM -Prozess (theoretisch muss ein laufendes Java -Programm ein eigenes unabhängiges JVM haben) gibt es nur eine Instanz. Unabhängig davon, wo die Instanz im Programm erhalten wird, wird das gleiche Objekt immer zurückgegeben. Wenn Sie die eingebaute Laufzeit in Java als Beispiel nehmen (die Aufzählung ist jetzt die beste Praxis des Singleton-Musters), egal wo die Zeit und wo sie erhalten wird, ist das folgende Urteil immer wahr:
// Basierend auf dem faulen Modus // gibt es immer nur eine Instanz in einer JVM -Instanz -Laufzeit.
Im Gegensatz dazu stehen die Singleton -Bohnen von Spring eng mit ihren Containern (ApplicationContext) zusammen. Daher wird in einem JVM -Prozess, wenn mehrere Federbehälter vorhanden sind, sogar eine Singleton -Bohne auf jeden Fall mehrere Instanzen erstellen. Das Codebeispiel lautet wie folgt:
// Das erste Spring Bean Container applicationContext context_1 = new FileSystemXMLApplicationContext ("classPath:/ApplicationContext.xml"); Person yiifaa_1 = context_1.getbean ("yiifaa", Person.class); // Der zweite Spring Bean Container ApplicationContext context_2 = new FileSystemXMLApplicationContext ("classPath:/ApplicationContext.xml"); Person yiifaa_2 = context_2.getbean ("yiifaa", Person.class); // Dies ist definitiv nicht gleich, da mehrere Instanzen erstellt werden.Hier ist die Frühlingskonfigurationsdatei:
<!-Auch wenn es als Singleton deklariert wird, werden mehrere Instanzen erstellt, solange mehrere Container vorhanden sind-> <bean id = "yiifaa" Scope = "Singleton"> <constructor-arg name = "userername"> <wert> yiifaa </value> </konstruktor-arg> </lean> </lean>
Zusammenfassen
Die Singleton -Bohnen von Spring sind eng mit Frühlingsbohnenmanagementbehältern verbunden. Jeder Container erzeugt eine eigene einzigartige Instanz und unterscheidet sich daher sehr vom Singleton -Muster im GOF -Designmuster. In tatsächlichen Anwendungen kann jedoch die Auswirkung des Singleton -Musters tatsächlich erreicht werden, wenn der Lebenszyklus des Objekts vollständig an das Frühlingsmanagement übergeben wird (nicht durch Neue, Reflexion usw.).
In dem oben genannten Artikel geht es um diesen Artikel, in dem der Unterschied zwischen Spring Singleton Bean und Singleton -Modell erörtert wird. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!