春のシングルトン豆とシングルトンのパターンの違いは、それらが異なる環境に関連していることです。 Singletonパターンは、JVMプロセスの1つのインスタンスのみを指し、Spring SingletonはSpring Beanコンテナ(ApplicationContext)の1つのインスタンスのみを参照しています。
まず、シングルトンパターンを見てください。 JVMプロセス(理論的には、実行中のJavaプログラムには独自の独立したJVMが必要です)では、1つのインスタンスしかありません。したがって、プログラムのインスタンスがどこで取得されても、同じオブジェクトが常に返されます。 Javaの組み込みのランタイムを例として取ります(列挙は今ではSingleton Patternのベストプラクティスです)、時間とそれがどこで得られたかに関係なく、次の判断は常に真実です。
// Lazy Modeに基づく// JVMインスタンスRuntime.getRuntime()== runtime.getRuntime()には常に1つのインスタンスしかありません。
対照的に、SpringのSingleton Beansは容器に密接に関連しています(ApplicationContext)。したがって、JVMプロセスでは、複数のスプリングコンテナがある場合、シングルトンビーンでさえ間違いなく複数のインスタンスを作成します。コードの例は次のとおりです。
//最初のスプリングビーンコンテナApplicationContext Context_1 =新しいファイルSystemXMLApplicationContext( "classPath:/applicationContext.xml"); Person yiifaa_1 = Context_1.getBean( "yiifaa"、person.class); // 2番目のスプリングビーンコンテナアプリケーションContext Context_2 = new FilesystemxmlapplicationContext( "classpath:/applicationcontext.xml"); person yiifaa_2 = context_2.getbean( "yiifaa"、person.class); //これは間違いなく等しくありません。
これがスプリング構成ファイルです。
<! - それがシングルトンとして宣言されていても、複数のコンテナがある限り、複数のインスタンスが作成されます - > <bean id = "yiifaa" scope = "singleton"> <constructor-arg name = "username"> <value> yiifaa </value> </constructor-arg> </bean>
要約します
SpringのSingleton Beansは、Spring Bean Management Containersと密接に関連しています。各コンテナは独自のユニークなインスタンスを作成するため、GOFデザインパターンのシングルトンパターンとは大きく異なります。ただし、実際のアプリケーションでは、オブジェクトのライフサイクルが春の管理(他の場所では新しい反射などによって作成されていない)に完全に引き渡された場合、シングルトンパターンの効果を実際に達成できます。
上記は、春のシングルトンビーンとシングルトンモデルの違いについて議論するこの記事に関するすべてです。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!