美文网首页
spring中的单例模式和设计模式中的单例模式的却比

spring中的单例模式和设计模式中的单例模式的却比

作者: 西西_20f6 | 来源:发表于2018-10-29 14:41 被阅读0次

spring单例bean与设计模式的单例模式的区别在于它们关联的环境不一样。
单例模式是指在一个JVM进程中仅有一个实例,无论在程序中何处获取该实例,始终都返回同一个对象。
而spring单例是指一个spring bean容器(ApplicationContext)中仅有一个实例。
spring的单例bean是与其容器密切相关的,如果在一个JVM进程中有多个spring容器,即使是单例bean,也一定会创建多个实例,

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

applicationContext.xml配置文件

<!-- 即使声明了为单例,只要有多个容器,也一定会创建多个实例 -->
<bean id="userBean1" class="demo2.UserBean1" scope="singleton"></bean>

signleton:只有一个共享的实例存在,所有对这个bean的请求都会返回这个唯一实例。
prototype:对这个bean的每次请求都会创建一个新的bean实例,类似于new
spring bean默认是单例模式。
在实际应用中,如果将对象的生命周期完全交给spring管理,不在其他地方通过new,反射等方式创建,其实也能达到单例模式的效果。
单例模式:
1,只有一个共享的实例存在,所有对这个bean的请求都会返回这个唯一的实例。
2,不同的请求可以同时拿这个实例来用,执行实例中不同的方法时,可以同时进行,但是不可以同时执行该实例的同一个方法。其实就是单例模式的线程安全问题。
3,实例里面不可以有成员变量,因为成员变量共享的话,一个对它修改,另一个再拿来用,用的是修改之后的,会不安全。

相关文章

  • 设计模式

    手写单例模式(线程安全) 你知道几种设计模式?单例模式是什么?Spring中怎么实现单例模式?

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类...

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • Java中单例模式你用的哪一种?

    一起讨论java中的单例模式。单例模式是java设计模式中算是最简单的设计模式了。 * java实现单例模式的写法...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • Java四种单例设计模式

    Java中的四种单例模式 单例模式是最容易理解的设计模式之一,介绍Java中单例模式的四种写法。 1.基本单例模式...

  • Node.js与单例模式

    1、前端的JavaScript单例模式 单例模式是非常常用的设计模式,前端的JavaScript中单例模式代码可能...

网友评论

      本文标题:spring中的单例模式和设计模式中的单例模式的却比

      本文链接:https://www.haomeiwen.com/subject/xzxbtqtx.html