spring scope默认,spring支持的scope有哪些

  spring scope默认,spring支持的scope有哪些

  

目录

Spring的作用域配置和@scope注释1。Spring的作用域是组装Bean2。基于注释开发1的Spring中作用域的详细解释。范围2介绍。范围3的历史和分类。单个范围的详细说明4 1。范围配置

 

  

Spring的scope配置和@scope注解

作用域,在Spring IoC容器中也称为作用域,指的是它创建的Bean对象相对于其他Bean对象所请求的可见范围。

 

  在 Spring IoC 容器中具有以下几种作用域:

  基本范围(单例,原型)Web范围(reqeust,session,globalsession)自定义范围。

  配置文件中必须指明00-1010。配置方式如下(以xml配置文件为例):

  !-具体的作用域需要在scope属性中定义-bean id= XXX class= com . XXX . xxxx scope= xxxx /singleton:singleton模式,在整个Spring IoC容器中,将只有一个由singleton: prototype模式定义的Bean实例,每次通过容器的getBean方法获取prototype定义的Bean,都会生成一个新的Bean实例请求:对于每个HTTP请求,由request定义的Bean都会生成一个新的实例,也就是说,每个HTTP请求都会生成一个不同的Bean实例。只有在Web应用程序中使用Spring时,这个范围才有效。会话:对于每个HTTP会话,由会话定义的Bean将生成一个新的实例。只有在Web应用程序中使用Spring时,作用域才有效。globalsession:每个全局HTTP会话,会话定义的Bean都会生成一个新的实例。通常,它只在使用portlet上下文时才起作用。只有当Spring也用于Web应用程序时,这个范围才对其中比较常用的是singleton和prototype两种作用域。.有效

  对于具有singleton作用域的bean,每次请求bean时都会获得相同的实例。容器负责跟踪Bean实例的状态,维护Bean实例的生命周期行为;如果一个Bean被设置为prototype范围,Spring将创建一个新的Bean实例,并在每次程序请求一个具有该id的Bean时将它返回给程序。在这种情况下,Spring容器只使用new关键字来创建Bean实例。一旦创建成功,容器将不会跟踪实例,也不会维护Bean实例的状态。

  如果不指定Bean的作用域,Spring默认使用singleton作用域。Java创建Java实例时,需要申请内存;当实例被销毁时,需要完成垃圾收集,这会导致系统开销的增加。因此,创建和销毁原型作用域Bean的成本很高。但是,一旦成功创建了singleton范围的Bean实例,就可以重用它。因此,除非必要,尽量避免将Bean设置为原型范围。

  

1.Spring的作用域在装配Bean

@scope默认情况下,完成的bean的作用域配置是singleton模式。如果需要设置,可以修改相应的值,与上面提到的例子一致:@ @scope("prototype ")

 

  

2.基于注解开发时

思维导图

 

  00-1010范围在spring中是一个非常关键的概念。简单来说就是spring容器(IOC容器)中一个对象的生命周期,也可以理解为Spring容器中一个对象的创建方式。

  00-1010目前,范围有五个值:

  在Spring 2.0之前,有两种类型:单例和原型;

  在Spring 2.0之后,为了支持web应用的ApplicationContext,增强了另外三种类型:请求、会话和全局会话。它们仅适用于web程序,通常与XmlWebApplicationContext一起使用。

  

Spring中的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为注解配置。

  

 

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: