转自:https://fj-sh-chz.iteye.com/blog/1775149

singleton  (默认属性)

Spring将Bean放入Spring IOC容器的缓存池中,并将Bean引用返回给调用者,spring IOC继续对这些Bean进行后续的生命管理。BeanFactory只管理一个共享的实例。所有对这个特定bean的实例请求,都导致返回这个唯一 bean实例的引用。

即每次拿到的对象都是引用的同一个地址的对象。当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean。

2.prototype

Spring将Bean返回给调用者,调用者负责Bean后续生命的管理,Spring不再管理这些Bean的生命周期。 
每次对这个bean的实例请求都会导致一个新的实例的创建。当用户需要不受其他用户对象影响的对象或有类似的需求时,这是一个较理想的解决办法。

即每次拿到的对象都是引用的不同地址的对象。相当于一个new的操作。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责

以下的3种scope都使用的较少,类似于J2EE里面的request和session。在使用SpringMVC是可能会用到。

3.request

‍request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例: request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:

‍<listener> 
   <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener>

4.session

‍session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效

5.global session

‍global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用

对于Action来说需要指明scope=”prototype”或singleton=”false”,因为Action是线程不安全的,可能会导致跳转的页面错误。

对于带有数据成员变量的类需要指明scope=”prototype”或singleton=”false”。不然这样会导致多个线程共用同一个成员变量。

有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用singleton作用域。

Spring配置文件中bean标签的scope属性相关推荐

  1. 通过Spring配置文件中bean中的property赋值

    基本数据类型赋值-通过spring配置文件中bean中的property 扩展-以此方式可以通过配置为连接数据的属性赋值 1.如果是基本数据类型,可以通过setter方法为对象中的属性设置初始值,应用 ...

  2. spring配置文件中非bean标签的原理解析

    2019独角兽企业重金招聘Python工程师标准>>> 在spring配置文件中,我们经常见到context:property-placeholder/context:compone ...

  3. 基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)

    2019独角兽企业重金招聘Python工程师标准>>> spring使用了这么长时间, 你真的了解spring bean加载的机制吗? 这个是我们项目中最常见的配置文件中的内容配置, ...

  4. spring配置文件中Bean中的id和name的区别

    1.id属性命名必须满足XML的命名规范,因为id其实是XML中就做了限定的.总结起来就相当于一个Java变量的命名:不能以数字,符号打头,不能有空格,如123,?ad,"ab   &quo ...

  5. Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件...

    1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...

  6. Spring系列-bean标签内autowire属性应用

    文章目录 0.前言 1.autowire属性介绍 1.1.autowire官方介绍 1.2 autowire 理解 2.autowire属性应用范例 2.1.byName 方式使用 2.2.byTyp ...

  7. bean标签的常用属性

    这篇文章总结spring中bean标签的常用属性. bean标签常用属性有: id name class factory-method factory-bean init-method destory ...

  8. 【面试题】Spring框架中Bean的生命周期

    生命周期 1.实例化一个Bean--也就是我们常说的new一个对象: 2.按照Spring上下文对实例化的Bean进行配置--也就是IOC注入: 3.如果这个Bean已经实现了BeanNameAwar ...

  9. 再见面试官:你能说说 Spring 框架中 Bean 的生命周期吗?

    首先简单说一下(以下为一个回答的参考模板) 1.实例化一个Bean--也就是我们常说的new: 2.按照Spring上下文对实例化的Bean进行配置--也就是IOC注入: 3.如果这个Bean已经实现 ...

最新文章

  1. c语言嵌入式开发单片机,嵌入式开发|单片机基础
  2. UVa11853 Paintball
  3. java实验金额转换_java 数字金额转换中文金额
  4. Hive - HWI 简单使用
  5. pytorch将Tensor转为list
  6. 吴伯凡-认知方法论-为什么说“盲维”是认知升级的重要概念
  7. Photoshop教程:10秒闪电搞定照片构图
  8. c语言编译器tc2.0,Wintc软件下载
  9. 毁人不倦-令人困惑的浏览器安全策略:同源策略
  10. 阿里 卫哲谈阿里人力招聘价值观
  11. Cocos creator接 IOS 穿山甲
  12. 使用 youtube api封装播放器的坑
  13. HHDBCS的快捷命令使用
  14. 马化腾:通向互联网未来的七个路标
  15. mysql语句生成,SQL语句生成器
  16. java打开浏览器_Java调用浏览器打开网页完整实例
  17. 深入浅出PaddlePaddle函数——paddle.ones_like
  18. 计算机网络协议(二)——从二层到三层
  19. [转载]藏在人口数据中的商业秘密
  20. 广西北海自愿连锁经营业/1040阳光工程上总之后的真实内幕

热门文章

  1. 以太坊智能合约开发环境配置
  2. 架构之美—软件架构6大步骤(开篇)
  3. Google,真的要离我们而去吗?
  4. MDK linker和debug的设置以及在RAM中调试
  5. 全国计算机等级考试题库二级C操作题100套(第66套)
  6. win10计算机跑分,鲁大师如何跑分_鲁大师跑分详细教程
  7. mysql+server+80_Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程
  8. android listview remove 动画,给Android ListView添加删除item动画
  9. SHOW VARIABLES LIKE “tx_isolation“查看mysql查看当前数据库的事物隔离级别
  10. 单体应用架构——垂直应用架构———分布式架构———SOA架构———微服务架构