0.思维导图





1. scope概论

spring中scope是一个很关键的概念。简单说就是对象在spring容器(IOC容器)中的生命周期,也能够理解为对象在spring容器中的创建方式。

2. scope历史及分类

眼下。scope的取值有5种取值:

在Spring 2.0之前。有singleton和prototype两种;

在Spring 2.0之后,为支持web应用的ApplicationContext,增强另外三种:request。session和global session类型。它们仅仅有用于web程序,一般是和XmlWebApplicationContext共同使用。

3.单个scope具体解释


1)singleton (单一实例)

此取值时表明容器中创建时仅仅存在一个实例,全部引用此bean都是单一实例。

如同每一个国家都有一个总统。国家的全部人共用此总统,而这个国家就是一个spring容器,总统就是spring创建的类的bean,国家中的人就是其他调用者。总统是一个表明其在spring中的scope为singleton。也就是单例模型。

此外。singleton类型的bean定义从容器启动到第一次被请求而实例化開始。仅仅要容器不销毁或退出。该类型的bean的单一实例就会一直存活,典型单例模式。如同servlet在web容器中的生命周期。

2)prototype

spring容器在进行输出prototype的bean对象时,会每次都又一次生成一个新的对象给请求方,尽管这样的类型的对象的实例化以及属性设置等工作都是由容器负责的。可是仅仅要准备完成。而且对象实例返回给请求方之后,容器就不在拥有当前对象的引用,请求方须要自己负责当前对象后继生命周期的管理工作,包含该对象的销毁。也就是说,容器每次返回请求方该对象的一个新的实例之后,就由这个对象“自生自灭”。最典型的体现就是spring与struts2进行整合时,要把action的scope改为prototype。

如同分苹果,将苹果的bean的scope属性声明为prototype,在每一个人领取苹果的时候。我们都是发一个新的苹果给他,发完之后,别人爱怎么吃就怎么吃,爱什么时候吃什么时候吃,可是注意吃完要把苹果核扔到垃圾箱!对于那些不能共享使用的对象类型,应该将其定义的scope设为prototype。

3)request

再次说明request,session和global session类型仅仅有用于web程序。一般是和XmlWebApplicationContext共同使用。

<bean id ="requestPrecessor" class="...RequestPrecessor"   scope="request" />

Spring容器,即XmlWebApplicationContext 会为每一个HTTP请求创建一个全新的RequestPrecessor对象,当请求结束后,该对象的生命周期即告结束,如同java web中request的生命周期。当同一时候有100个HTTP请求进来的时候。容器会分别针对这10个请求创建10个全新的RequestPrecessor实例,且他们相互之间互不干扰。简单来讲,request能够看做prototype的一种特例,除了场景更加详细之外,语意上差点儿相同。

4)session

对于web应用来说,放到session中最普遍的就是用户的登录信息,对于这样的放到session中的信息。我们能够使用例如以下形式的制定scope为session:

<bean id ="userPreferences" class="...UserPreferences"   scope="session" />

Spring容器会为每一个独立的session创建属于自己的全新的UserPreferences实例,比request scope的bean会存活更长的时间,其它的方面没差别,假设java web中session的生命周期

5)global session

<bean id ="userPreferences" class="...UserPreferences"   scope="globalsession" />

global session仅仅有应用在基于porlet的web应用程序中才有意义。它映射到porlet的global范围的session,假设普通的servlet的web 应用中使用了这个scope。容器会把它作为普通的session的scope对待。

4.scope配置


1)xml方式

进行bean的配置时,指定scope。


2)注解方式

前提为配置spring为注解配置。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFja2xlYXJudGVjaA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

版权声明:本文博客原创文章,博客,未经同意,不得转载。

spring中间scope详细解释的更多相关文章

  1. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  2. Spring学习13-中IOC(工厂模式)和AOP(代理模式)的详细解释

    我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC是工厂模式参考:设计模式- ...

  3. SpringBoot-02:SpringBoot中的POM文件详细解释

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 我把pom文件,以及它的详细解释发出来 <?xml version="1.0" en ...

  4. Spring IOC源代码具体解释之容器依赖注入

    Spring IOC源代码具体解释之容器依赖注入 上一篇博客中介绍了IOC容器的初始化.通过源代码分析大致了解了IOC容器初始化的一些知识.先简单回想下上篇的内容 加载bean定义文件的过程.这个过程 ...

  5. Spring IOC源代码具体解释之容器初始化

    Spring IOC源代码具体解释之容器初始化 上篇介绍了Spring IOC的大致体系类图,先来看一段简短的代码,使用IOC比較典型的代码 ClassPathResource res = new C ...

  6. .htaccess语法之RewriteCond与RewriteRule指令格式详细解释

    htaccess语法之RewriteCond与RewriteRule指令格式详细解释 (2012-11-09 18:09:08) 转载▼ 标签:  htaccess it 分类: 网络 上文htacc ...

  7. cookie的详细解释

    突然看到网页上中英文切换的效果,不明白怎么弄得查了查 查到了cookie 并且附有详细解释 就copy留作 以后温习 http://blog.csdn.net/xidor/article/detail ...

  8. tar命令的详细解释

    tar命令的详细解释 标签: linuxfileoutputbashinputshell 2010-05-04 12:11 235881人阅读 评论(12) 收藏 举报  分类: linux/unix ...

  9. Spring的scope="prototype"属性

    spring 默认scope 是单例模式这样只会创建一个Action对象每次访问都是同一个Action对象,数据不安全struts2 是要求 每次次访问 都对应不同的Actionscope=" ...

随机推荐

  1. Java的wait(), notify()和notifyAll()使用心得(转)

    本篇文章是对java的 wait(),notify(),notifyAll()进行了详细的分析介绍,需要的朋友参考下wait(),notify()和notifyAll()都是java.lang.Obj ...

  2. lucas定理解决大组合数取模

    LL MyPow(LL a, LL b) { LL ret = ; while (b) { ) ret = ret * a % MOD; a = a * a % MOD; b >>= ; ...

  3. hdu1507最大匹配

    题意:给出n*m的矩阵方块,某些方块是ponds,这些方块不能出售,然后能出售的是1*2的方块 要求求出有多少块1*2的方块能够出售,并输出这些方块的坐标(specia judge) 关键是怎么建出二 ...

  4. centos6.5安装nodejs

    Preface(前言) 一次偶然的机会知道有nodejs这个东西,确实对它还是非常感兴趣的.刚開始仅仅知道它能让javascript写后台,然后前后台都由javascript来写,确实认为真的挺爽,毕 ...

  5. Type mismatch: cannot convert from Enumeration&lt;String&gt; to Enumeration&lt;Object&gt;

    完整的错误信息: Description Resource Path Location TypeType mismatch: cannot convert from Enumeration<St ...

  6. WPF 引用DLL纯图像资源包类库中的图片

    原文:WPF 引用DLL纯图像资源包类库中的图片 1.建立WPF应用程序              过程略.   2.创建类库项目(图片资源包)       创建图片资源类库项目MyImages,删除 ...

  7. ECG信号读出,检测QRS,P,T 波(小波去噪,并根据检测),基于BP辨识的神经网络

    这学期的课程选择神经网络.最后的作业处理ECG信号,并利用神经网络识别. 1  ECG引进和阅读ECG信号 1)ECG介绍  详细ECG背景应用就不介绍了,大家能够參考百度 谷歌.仅仅是简单说下ECG ...

  8. 微信小程序开发者工具集合包

    开发论坛 http://www.henkuai.com/forum-56-1.html 工具包下载  https://yunpan.cn/ckXFpuzAeVi2s  访问密码 b4cc 开发文档 h ...

  9. HttpLuaModule——翻译(Nginx API for Lua) (转)

    现在我已经将翻译的内容放到:http://wiki.nginx.org/HttpLuaModuleZh Nginx API for Lua Introduction 各种各样的*_by_lua和*_b ...

  10. 【转】d3d的投影矩阵推导

    原帖地址:http://blog.csdn.net/popy007/article/details/4091967 上一篇文章中我们讨论了透视投影变换的原理,分析了OpenGL所使用的透视投影矩阵的生 ...