当前位置: 首页 > news >正文

spring bean的scope

spring bean 的scope有5种:

Singleton:当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。

换言之,当把一个bean定义设置为singlton作用域时,Spring IoC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例

Prototype:Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。

下图演示了Spring的prototype作用域。请注意,通常情况下,DAO不会被配置成prototype,因为DAO通常不会持有任何会话状态,因此应该使用singleton作用域。

request : 针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例, 且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态, 而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。 当处理请求结束,request作用域的bean实例将被销毁。

session:针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例, 且该userPreferences bean仅在当前HTTP Session内有效。 与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例, 将不会看到这些特定于某个HTTP Session的状态变化。 当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。

global sessionglobal session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。

请注意,假如你在编写一个标准的基于Servlet的web应用,并且定义了一个或多个具有global session作用域的bean,系统会使用标准的HTTP Session作用域,并且不会引起任何错误。

 

转载于:https://www.cnblogs.com/badoumi/p/5294764.html

相关文章:

  • J-Link的RTT功能实践
  • MVVM for silverlight
  • sort()的多种用法
  • 产品生产环节的一些名词
  • 生活随笔-为知笔记发布博客到博客园
  • 对你有用的名言集锦
  • 探究adroid活动
  • animation中的steps()逐帧动画
  • asm goto与JUMP_LABEL
  • 巧用工具制作视频截图索引文件
  • 进程遍历模块遍历
  • Linux inode耗尽导致图片/文件无法上传
  • 人生好比挤地铁(地铁育新站)
  • PowerDesinger12.5破解中文版-资源共享与安装介绍
  • FZU 1343 WERTYU --- 水题
  • php的引用
  • gitlab-ci配置详解(一)
  • Java 多线程编程之:notify 和 wait 用法
  • java概述
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • React的组件模式
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue ES6 Jade Scss Webpack Gulp
  • 分布式事物理论与实践
  • 规范化安全开发 KOA 手脚架
  • 基于Android乐音识别(2)
  • 技术:超级实用的电脑小技巧
  • 排序算法学习笔记
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 用jQuery怎么做到前后端分离
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • # 数论-逆元
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (2)MFC+openGL单文档框架glFrame
  • (42)STM32——LCD显示屏实验笔记
  • (5)STL算法之复制
  • (6)设计一个TimeMap
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)共用体union的用法举例
  • (Git) gitignore基础使用
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (一)VirtualBox安装增强功能
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .dwp和.webpart的区别
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET Core引入性能分析引导优化
  • .net 受管制代码
  • .net操作Excel出错解决
  • .NET分布式缓存Memcached从入门到实战
  • .net和php怎么连接,php和apache之间如何连接
  • .NET学习全景图