Spring中Bean的五个作用域

原创 2015年11月23日 15:35:25

当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:

  • singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例

  • prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例

  • request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效

  • session:对于每次HTTP Session,使用session定义的Bean豆浆产生一个新实例。同样只有在Web应用中使用Spring时,该作用域才有效

  • globalsession:每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。典型情况下,仅在使用portlet context的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效

  其中比较常用的是singleton和prototype两种作用域。对于singleton作用域的Bean,每次请求该Bean都将获得相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为;如果一个Bean被设置成prototype作用域,程序每次请求该id的Bean,Spring都会新建一个Bean实例,然后返回给程序。在这种情况下,Spring容器仅仅使用new 关键字创建Bean实例,一旦创建成功,容器不在跟踪实例,也不会维护Bean实例的状态。

  如果不指定Bean的作用域,Spring默认使用singleton作用域。Java在创建Java实例时,需要进行内存申请;销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加。因此,prototype作用域Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean被设置成prototype作用域。

Spring核心技术(五)——Spring中Bean的作用域

前文概述了Spring的容器,Bean,以及依赖的一些信息,本文将描述一下Bean的作用域Bean的作用域当开发者定义Bean的时候,同时也会定义了具体如何创建Bean实例的步骤。这些步骤是很重要的,...
  • EthanWhite
  • EthanWhite
  • 2016年05月22日 18:23
  • 12815

Spring 配置使用 - Bean 作用域

基本概念Scope,也称作用域,在 Spring IoC 容器是指其创建的 Bean 对象相对于其他 Bean 对象的请求可见范围。在 Spring IoC 容器中具有以下几种作用域:基本作用域(re...
  • u012420654
  • u012420654
  • 2016年10月08日 21:59
  • 2308

Spring容器中Bean的作用域

摘要 介绍Spring中Bean的作用域的用法,作用域包括singleton、prototype、request、session和globalsession5种。     当通过Spr...
  • cleble
  • cleble
  • 2016年08月11日 12:16
  • 1704

bean的作用域

Spring 应用上下文中所有的bean都是以单例(singleton)的形式存在,简单的说,就是一个给定的bean无论被注入到其他的bean多少次,每次注入的都是相同的一个实例,即类.toStrin...
  • November22
  • November22
  • 2017年02月11日 09:45
  • 197

Bean的作用域及生命周期

一、Spring Framework支持五种作用域(其中有三种只能用在基于web的Spring ApplicationContext)。  内置支持的作用域分列如下: 作用域 描述 si...
  • petercnmei
  • petercnmei
  • 2016年09月17日 15:13
  • 539

Spring中bean的作用域

Bean简介:    在Spring中,那些组成你应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及...
  • fengruifang
  • fengruifang
  • 2011年04月20日 22:19
  • 28165

Spring学习(十五)Spring Bean 的5种作用域介绍

Spring Bean 中所说的作用域,在配置文件中即是“scope” 在面向对象程序设计中作用域一般指对象或变量之间的可见范围。 而在Spring容器中是指其创建的Bean对象相对于其他Bean...
  • icarus_wang
  • icarus_wang
  • 2016年06月04日 23:32
  • 3125

Spring Bean的作用域之间有什么区别?

Spring容器中的bean可以分为5个范围。所有范围的名称都是自说明的,但是为了避免混淆,还是让我们来解释一下: 1.       singleton:这种bean范围是默认的,这种范围确保不管接...
  • miachen520
  • miachen520
  • 2016年07月31日 10:01
  • 1158

Spring中bean的作用域与生命周期

在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对...
  • fuzhongmin05
  • fuzhongmin05
  • 2017年06月17日 22:29
  • 548

spring的bean 的作用域

 这里的scope就是用来配置spring bean的作用域,它标识bean的作用域。在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称pr...
  • lifuxiangcaohui
  • lifuxiangcaohui
  • 2011年04月02日 12:46
  • 717
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring中Bean的五个作用域
举报原因:
原因补充:

(最多只允许输入30个字)