spring中bean的五种作用域?spring中的bean是线程安全的吗?

莫等、闲      2022-05-18     248

关键词:

spring中bean的五种作用域

当通过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中Bean的五个作用域

 

Spring中的bean是线程安全的吗?

spring 管理的 bean 的线程安全跟 bean 的创建作用域和 bean 所在的使用环境是否存在竞态条件有关,spring 并不能保证 bean 的线程安全。

 

参考链接:spring中的bean是线程安全的吗?

spring——bean的作用域

Spring中Bean的作用域有五种,分别是singleton、prototype、request、session、globalSession。其中request、session、globalSession这三个作用域只有在web开发中才会使用到。当在Spring中定义一个bean时,你必须声明该bean的作用域的选项,若没有声明... 查看详情

将bean放入spring容器中的五种方式

...#xff1a;blog.csdn.net/weixin_43741092/article/details/120176466将bean放入Spring容器中有哪些方式?我们知道平时在开发中使用Spring的时候,都是将对象交由Spring去管理,那么将一个对象加入到Spring容器中,有哪些方式呢,下... 查看详情

spring中bean的作用域

Spring中bean的作用域可以在xml配置文件(一般叫bean.xml或ApplicationContext.xml)中通过scope属性进行指定。 在Spring中,bean对象可以有多种作用域   singletion默认的,每个IOC容器只创建一个Bean实例   prototype每次... 查看详情

spring5学习笔记—“bean的作用域”(代码片段)

目前SpringBean的作用域/范围主要有五种:(常用:singleton,prototype)在Spring里面,默认情况下,bean是单实例对象;我们在Spring配置文件中使用bean标签创建对象时,可以使用scope属性来设置bean的作用域... 查看详情

spring中bean的作用域(代码片段)

1:和变量一样,bean也有作用域,spring中我们可以为bean指定作用域:<bean id="" class=""  scope="....">2:作用域的种类singleton:单例模式,在spring中只有一个实例 查看详情

spring实战-bean作用域

Spring定义了多种域单例(Singleton):在整个应用中,只有一个实例原型(Prototype):每次注入或者通过Spring应用上线文获取时,都创建一个bean实例会话(Session):在web应用中,为每个会话创建一个bean.使用场景:购物车请求(Re... 查看详情

spring中bean的作用域属性

 当一个bean的作用域设置为singleton,那么springIOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时,SpringIOC容器... 查看详情

spring中bean的作用域

   在Spring中,那些组成应用程序的主体及由SpringIoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。而bean的定义... 查看详情

spring核心技术——spring中bean的作用域

前文概述了Spring的容器,Bean,以及依赖的一些信息,本文将描述一下Bean的作用域Bean的作用域当开发者定义Bean的时候,同时也会定义了该如何创建Bean实例。这些具体创建的过程是很重要的,因为只有通过对这... 查看详情

spring07----bean的作用域

...对象程序设计中一般指对象或变量之间的可见范围。而在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求可见范围。Spring提供“singleton”和“prototype”两种基本作用域,另外提供“request”、“session”、“globalsession”... 查看详情

spring之scope作用域

spring中,bean的作用域有五种类型:默认是单例模式,    singleton    prototype    request    session    globalsession配置作用域 查看详情

spring02——spring中bean的生命周期及其作用域

在前一篇文章中,我们已经介绍了SpringIOC的相关知识,今天将为个位介绍Spring中Bean的相关知识。关注我的公众号「Java面典」,每天10:24和你一起了解更多Java相关知识点。Bean的生命周期Spring生命周期有四个阶段,分别是:实例... 查看详情

关于 Spring bean 容器中的作用域和垃圾回收

】关于Springbean容器中的作用域和垃圾回收【英文标题】:RegardingthescopeandgarbagecollectioninSpringbeancontainer【发布时间】:2011-12-0716:45:29【问题描述】:我是Spring新手,目前正在我的一个项目中使用它。我了解到Spring容器包含所有bean... 查看详情

聊聊spring中bean的作用域(代码片段)

前言今天分享一下springbean的作用域,理解bean的作用域能够在使用过程中避免一些问题,bean的作用域也是springbean创建过程中一个重要的点。Springbean的作用域类型singleton(单例模式):在整个应用程序的生命周期中,只创建一个B... 查看详情

详解spring中bean的作用域与生命周期(代码片段)

摘要:在利用Spring进行IOC配置时,关于bean的配置和使用一直都是比较重要的一部分,同时如何合理的使用和创建bean对象,也是小伙伴们在学习和使用Spring时需要注意的部分,所以这一篇文章我就来和大家讲一... 查看详情

spring之bean的作用域与生命周期

在前面博客中提到容器启动获得BeanDefinition对象中有一个scope属性。该属性控制着bean对象的作用域。本章节介绍Bean的作用域及生命周期,了解bean是怎么来的又怎么没的。一、Bean的作用域在Bean容器启动会读取bean的xml配置文件,... 查看详情

在spring中,bean有几种作用域?

...1、singleton作用域当一个bean的作用域设置为singleton,那么SpringIOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singleton作用域时... 查看详情

spring中支持几种作用域?

参考技术A7.Spring中支持几种作用域Spring容器中的bean可以分为5个范围:prototype:为每一个bean请求提供一个实例。singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。request:为每一个网络请求创建... 查看详情