bean的五个作用域(代码片段)

zhangsonglin zhangsonglin     2022-12-13     374

关键词:

技术图片

一、Singleton
技术图片

Singleton是单例类型,bean默认就是单例的,就是在创建起容器时就同时自动创建了一个bean的对象,不管你是否使用,他都存在了,每次获取到的对象都是同一个对象。当开发者定义一个Bean的作用域为单例时,Spring IoC容器只会根据Bean定义来创建该Bean的唯一实例。这些唯一的实例会缓存到容器中,后续针对单例Bean的请求和引用,都会从这个缓存中拿到这个唯一的实例
<bean id="ServiceImpl" class="com.service.ServiceImpl" scope="singleton">

二、Prototype
技术图片

Prototype是原型类型,它在我们创建容器的时候并没有实例化,而是当我们获取bean的时候才会去创建一个对象,而且我们每次获取到的对象都不是同一个对象.
(对有状态的bean应该使用prototype作用域,
对无状态的bean则应该使用singleton作用域)
<bean id=" ServiceImpl " class=" com.service.ServiceImpl " scope="prototype"/>
或者
<bean id=" ServiceImpl " class=" com.service.ServiceImpl " singleton="false"/>

三、request
当一个bean的作用域为Request,表示在一次HTTP请求中,一个bean定义对应一个实例;(每个HTTP请求都会有各自的bean实例,它们依据某个bean定义创建而成)该作用域仅在基于web的Spring ApplicationContext情形下有效
<bean id="goInt" class= “com.zsl.action.goInt " scope="request"/>
针对每次HTTP请求,Spring容器会根据goInt bean的定义创建一个全新的bean实例,且该goInt bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态,不会影响到其他的bean,http请求协议是无连接,无状态的,而其他请求中根据goInt bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。当处理请求结束,request作用域的bean实例将被销毁。

四、session
当一个bean的作用域为Session,表示在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效
<bean id=" goInt " class=" com.zsl.action.goInt " scope="session"/>
针对某个HTTP Session,Spring容器会根据goInt bean定义创建一个全新的bean实例,且该goInt bean仅在当前HTTP Session内有效。与request作用域一样,可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据goInt创建的实例,将不会看到这些特定于某个HTTP Session的状态变化。当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。

五、Global Session
当一个bean的作用域为Global Session,表示在一个全局的HTTP Session中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext情形下有效。
<bean id="user" class="com.zsl.user "scope="globalSession"/>
global session作用域类似于标准的HTTP Session作用域, 与session大体相同,但仅在portlet应用中使用。Portlet规范定义了全局session的概念。请求的bean被组成所有portlet的自portlet所共享。
如果不是在portlet这种应用下,globalSession则等价于session作用域。

request,session以及global session这三个作用域都是只有在基于web的SpringApplicationContext实现的(比如XmlWebApplicationContext)中才能使用。
如果开发者仅仅在常规的Spring IoC容器中比如ClassPathXmlApplicationContext中使用这些作用域,那么将会抛出一个IllegalStateException来说明使用了未知的作用域。

借鉴于:
https://blog.csdn.net/jishuizhipan/article/details/79391651
https://blog.csdn.net/fuzhongmin05/article/details/73389779

个人温故学习之用

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

spring中bean的五种作用域当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:singleton:单例模式,在整个SpringIoC容器中,使用singleton定义的Bean将只有一个... 查看详情

this的五种指法(代码片段)

...被确定的作用域。js中只有this的作用域是动态作用域this的五种绑定初学js时,会想当然认为this遵循某一条规律,就像物理学那样,然而并不是。this的绑定分为五种情况,这五种情况之间毫无规律可言。不过好在都很简单。一.默... 查看详情

008ioc--bean的作用域(代码片段)

一.概述  在前面我们提到了一个作用域的概念.那么什么是作用域呢? 二.作用域  在spring为了描述Bean的生命周期提出了作用域的概念.常见的作用域有:[1]Singleton:业务单例[2]prototype:业务多例[3]request:web下的请求范围[4]session... 查看详情

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

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

springioc之bean的作用域(代码片段)

...//blog.csdn.net/bingjing12345/article/details/9794945SpringBean中所说的作用域,在配置文件中即是“scope”在面向对象程序设计中作用域一般指对象或变量之间的可见范围 查看详情

spring--bean作用域(代码片段)

...OC容器来管理Bean,在创建Bean的过程中,主要有5中作用域,下面就来介绍一下每一个作用域的特点和作用。 1、Singleton:设置为该模式的Bean,容器初始化时就创建一个Bean实例,而且该实例只存在一份。测... 查看详情

springbean作用域

...该声明bean的作用域的属性为singleton。Spring框架支持以下五个作用域,分别为singleton、prot 查看详情

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

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

spingbean的作用域(代码片段)

...每个请求创建一个bean实例。(一)使用组件扫描时声明作用域(二)在JAVA配置中声明作用域(三)在XML文件中设置作用域1<beanid="cdTest"class="soundSystemJava"scope="prototype"></bean> 使用会话或请求作用域设置方法:  查看详情

spring框架学习----bean作用域(代码片段)

文章目录Spring框架学习(六)----Bean作用域一、singleton(单例模式)二、protoType(原型模式)Spring框架学习(六)----Bean作用域  经过前面的学习,我们可以知道bean是存在作用域的。  从spring的官方文档中发现sp... 查看详情

配置bean的作用域(代码片段)

一、Spring中Bean的5个作用域在Spring2.0及之后的版本中,Bean的作用域被划分为5种。如下singleton      默认值。以单例模式创建Bean的实例,即容器中该Bean的实例只有一个prototype     每次从容器中获取Bean时,都会创... 查看详情

spring总结之二(bean作用域依赖注入)(代码片段)

###Bean的作用域:单例(singleton),多例(prototype)1.单例模式:表示在任何地方使用对象,总是一个(对象是唯一的)。(笔面试重点)饿汉式publicclassKingprivatefinalstaticKingking=newKing();privateKing()publicstaticKinggetKing()returnking;懒汉式publiccla 查看详情

spring(bean作用域和生命周期)(代码片段)

目录1.案例1:Bean作用域的问题2.作用域3.设置Bean的作用域4.Spring的执行流程5.Bean的生命周期1.案例1:Bean作用域的问题现在有一个公共的Bean,通过给A用户和B用户使用,然后在使用的过程中A偷偷的修改了公共Bean的数据,导致B在使用时发... 查看详情

vuex的五个属性及使用方法(代码片段)

vue内部数据流程图 vue与组件之间的数据交互 一.如何使用全局State?//state的作用是存储公共数据//state是响应式的,如果修改了属性,那么在相对应,组件视图上的值也会改变//在store里定义格式newVuex.store(state:属... 查看详情

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

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

bean注解(annotation)配置-bean作用域与生命周期回调方法配置(代码片段)

...n)BeanXML配置(1)-通过XML配置加载BeanBeanXML配置(2)-Bean作用域与生命周期回调方法配置BeanXML配置(3 查看详情

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

目录一、Bean的作用域1、单实例Bean声明2、多实例Bean声明二、Bean的生命周期1、bean的初始和销毁2、bean的后置处理器Hello,你好呀,我是灰小猿!一个超会写bug的程序猿!在利用Spring进行IOC配置时,关于bean的配... 查看详情

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

目录一、Bean的作用域1、单实例Bean声明2、多实例Bean声明二、Bean的生命周期1、bean的初始和销毁2、bean的后置处理器Hello,你好呀,我是灰小猿!一个超会写bug的程序猿!在利用Spring进行IOC配置时,关于bean的配... 查看详情