“单例模式” “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);