“单例模式”  “spring单例bean”  “多例模式”  需要放在一起理解,特别是前两者。

 

单例模式:保证系统中一个类只能构建一个对象。

spring单例bean:表示Spring Bean容器(ApplicationContext)中仅有一个实例。

So,单例模式和spring单例的区别在于他们“作用域”(即关联范围不一样,一个是JVM一个是容器)。

感谢XX博主的解释:https://blog.csdn.net/yiifaa/article/details/74852425

 

JVM进程  》》容器  》》bean实例

一个JVM进程(理论上一个运行的java程序必定有自己的一个JVM进程);多个容器就可以有多个对象了,他们在各自的容器中仍然是唯一的单例的。

【多个容器的演示】

//  第一个Spring Bean容器
ApplicationContext context_1 = new FileSystemXmlApplicationContext("classpath:/ApplicationContext.xml");
Person yiifaa_1 = context_1.getBean("yiifaa", Person.class);
//  第二个Spring Bean容器
ApplicationContext context_2 = new FileSystemXmlApplicationContext("classpath:/ApplicationContext.xml");
Person yiifaa_2 = context_2.getBean("yiifaa", Person.class);
//  这里绝对不会相等,因为创建了多个实例
System.out.println(yiifaa_1 == yiifaa_2);
 

10-07 17:57