singleton和protype的区别:

singleton作用域:当把一个Bean定义设置为singleton作用域是,Spring IoC容器中只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean定义相匹配,则只会返回该Bean的同一实例。值得强调的是singleton作用域是Spring中的缺省作用域。
prototype作用域:prototype作用域的Bean会导致在每次对该Bean请求(将其注入到另一个Bean中,或者以程序的方式调用容器的getBean

()方法)时都会创建一个新的Bean实例。根据经验,对有状态的Bean应使用prototype作用域,而对无状态的Bean则应该使用singleton作用域。
对于具有prototype作用域的Bean,有一点很重要,即Spring不能对该Bean的整个生命周期负责。具有prototype作用域的Bean创建后交由调

用者负责销毁对象回收资源。
简单的说:
singleton 只有一个实例,也即是单例模式
prototype访问一次创建一个实例,相当于new。
应用场合:
1.需要回收重要资源(数据库连接等)的事宜配置为singleton,如果配置为prototype需要应用确保资源正常回收。
2.有状态的Bean配置成singleton会引发未知问题,可以考虑配置为prototype。

默 认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: spring容器只存在一个共享的bean实例,默认的配置。 Prototype: 每次对bean的请求都会创建一个新的bean实例。二者选择的原则:有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用 singleton作用域。在Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为 request、session和 global session。如果你希望容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外 的初始化配置。即在web应用的web.xml中增加这么一个 ContextListener:org.springframework.web.context.request.RequestContextListener 以上是针对Servlet 2.4以后的版本。比如Request作用域!

singleton 是单态模式的 ,有ioc容器管理 ,当然不是线程安全的啦 ,不过所谓的线程安全也是相对的如果你的类是没有状态的, 那用singleton 的性能要高一些 ,因为只有一个实例。如果你的类是有状态的 ,那就必须显示的设置为prototype了在ssh2 项目中,struts2的action交由spring管理的时候,spring默认是singleton的,而struts2的action显然是有状 态的,所以必须显示设置为scope="prototype",prototype为原型模式,每次action请求过来都会创建一个action但是对 那些Dao的实现类推介scope="singleton" ,因为这些类没有状态,用singleton只需维护一个实例,显然性能高一些

spring Bean的作用域:

scope=singleton(默认,单例,生成一个实例) 不是线程安全,性能高

scope=prototype(多线程, 生成多个实例)

Spring :singleton和protype区别相关推荐

  1. prototype和singleton有什么区别

    spring中bean的不同scope 比如prototype和singleton有什么区别 1.singleton作用域 当一个bean的作用域设置为singleton, 那么Spring IOC容 ...

  2. Spring Singleton,请求,会话Bean和线程安全

    由众多有用框架组成的Spring框架生态系统已成为许多Java EE应用程序的基础. 但是在所有Spring产品的核心中,我们仍然拥有Spring DI / IOC框架,该框架将Spring推向了新的 ...

  3. Spring与SpringMVC的区别

    Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring. 简单点的话可以将SpringMVC类比于Strut ...

  4. spring boot 外部配置文件1-spring.config.location与spring.config.additional-location的区别

    spring boot外部配置文件 基础环境 : 基础环境 版本 spring boot 2.7.0 JDK 8 测试代码: @SpringBootApplication public class D ...

  5. springmvc和php,spring和springmvc的区别

    Spring与SpringMVC的区别 Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring. 简单点的话 ...

  6. spring.profiles.include 跟 spring.profiles.active 的区别

    spring.profiles.include 跟 spring.profiles.active 的区别 背景 我们经常看到springboot的 spring.profiles.active,有时也 ...

  7. mysql与spring隔离级别不同_mysql事务隔离级别与spring事务隔离级别的区别

    mysql事务隔离级别与spring事务隔离级别的区别: 脏读:为什么会出现脏读,因为你对数据库的任何修改都会是立即生效的,至于别人能不能看到主要取决与你 是否加锁了,数据库的执行与事务没有关系,事务 ...

  8. 面试官:spring boot和spring究竟有啥区别?

    面试官:spring boot和spring究竟有啥区别? 前言 今天本篇文章主要聚焦说说,spring boot和spring究竟有啥区别,重点对比MVC模块以及Security模块在两大框架使用时 ...

  9. Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666

    Spring MVC和Spring Boot有什么区别? 这样答,面试官直呼666 作为初级程序员,这样的问题在面试中,也被问到过,随着越来越了解,发现以前自己答的真水. 一般的回答 ​ 先来说说我以 ...

最新文章

  1. 顺序表-元素逆置(首尾交换)
  2. Html5 学习系列(一)认识HTML5
  3. JAVA程序禁用Hbase中的表_HBase禁用表
  4. hard sampling
  5. 2015_6_16-开博第一天
  6. 小程序如何实现tab切换,一部到位
  7. 可有可无的Mysql工作技巧
  8. 【华为云技术分享】云小课 | SAP容灾一点通
  9. Exchange 日志/存储路径
  10. Redis配置文件详解(redis.conf)
  11. 程序员疯狂记事:如何利用众多技术栈构建一个 Web 应用程序?!
  12. 线索二叉树 - 数据结构和算法48
  13. 网易云会员音乐NCM格式在线转为MP3格式
  14. 关于什么是AndroidX(一)
  15. Vue3 Extraneous non-props attributes (id) were passed to component but could not be automatically
  16. Flutter isolate使用
  17. 【系统分析师之路】第十六章 复盘计算机网络(新技术领域)
  18. NVIDIA TensorRT (python win10)安装成功分享
  19. 创业板公司相符如何经济转型
  20. jsp html实现旅游网站,基于JSP实现的旅游网站

热门文章

  1. 树莓派安装安装fcitx及google拼音输入法
  2. java线段的平移和旋转,几何变换(旋转、缩放、平移)
  3. 北航计算机学院的博士待遇,北航博士毕业留校让人寒心的工资
  4. Win10自带照片查看器卸载了怎么找回来
  5. 最实用整理!大数据搜索引擎工具有哪些?
  6. iOS 卡顿、掉帧原因+优化
  7. 【笔记整理 - 操作系统】(时间较早)
  8. MySQL- 经典面试题
  9. 淘宝小程序 表单组件checkbox的默认样式修改
  10. VirutualBox虚拟机内ubuntu扩充硬盘容量