spring中的scope详解版权声明
原创0.思维导图
- 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配置注释。
作者:tad2021
来源:CSDN
原文:https://blog.csdn.net/jacklearntech/article/details/40157861
版权声明:本文为博主原创文章。转载请附上博客链接!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除