bean的作用域——Spring对bean的管理(二)
本章案例基于上节,看不懂的请先看上节——bean的三种初始化方式:
https://blog.csdn.net/qq_34598667/article/details/83246492
Bean的作用域
bean的作用域:当在 Spring 中定义一个 bean 时,你必须声明该 bean 的作用域的选项。
作用域属性:scope
值:
1、singleton:在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认值
2、prototype:每次从容器中调用Bean时,都返回一个新的实例.
3、request:每次HTTP请求都会创建一个新的Bean
4、session:同一个HTTP Session共享一个Bean
5、global-session:一般用于Portlet应用环境,全局Session对象,
注:后三种仅限于Web环境(WebApplicationContext容器)
下面我们来测试前两种
singleton
在每个Spring IoC容器中,一个bean定义只有一个对象实例。
以上节案例为基础,我修改spring.xml配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 构造器实例化 --><bean id="demo" class="com.oak.junit.day01.Demo"></bean>
</beans>
使用默认作用域singleton
在测试类中测试
@Testpublic void testScope(){//实例化Spring容器ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); //获取demoDemo demo1=ctx.getBean("demo",Demo.class);Demo demo2=ctx.getBean("demo",Demo.class);System.out.println(demo1==demo2);//true}
测试,控制台输出true,说明了默认情况下bean交给Spring容器管理之后,这个bean就是一个单实例(单例模式)的,即每次调用getBean()方法,获取到的都是同一个bean实例。
prototype
现有一个新需求,要求每次调用getBean()都能得到一个新的对象。修改spring.xml配置文件,设置作用域scope=“prototype” ,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 构造器实例化 --><bean id="demo" class="com.oak.junit.day01.Demo" scope="prototype"></bean>
</beans>
测试类方法不用改,直接测试:
控制台输出false,证实了若bean的作用域置为prototype,那么每次调用getBean()方法从Spring容器获取bean都将是新的对象。
下一章:Spring对bean的管理(三)——bean的生命周期
bean的作用域——Spring对bean的管理(二)相关推荐
- spring容器bean的作用域 spring容器是否是单例的一些问题
Spring容器中Bean的作用域 当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域.Spring支持如下5种作用域: singleto ...
- spirng4.0-@Conditional 按条件注册bean、@Import导入组件bean、@FactoryBean spring的bean工厂注册bean
一.组件说明 @Conditional({xxx.class, xxx.class}),可用在方法和类上面 按照一定的条件进行判断,把满足条件的bean注册到springIOC容器中. @Import ...
- JAVA Spring Shiro mybaits 后台管理 二次开发框架 OA ERP CMS 微信 IM即时通讯(websocket)
系统架构图 目标: 1:提升开发效率,规范开发标准 2:提高质量,降低复杂度 3:打造一个开发简单.效率快..性能好.. 易上手的框架 兼容性: 1:设备:兼容IPAD,手机,电脑,笔记本等等 2:界 ...
- spring bean作用域_Srping中Bean的三种装配方式:大魏Java记10
一.Bean的作用域 Spring在初始化一个Bean实例时,可以同时为其指定特定的作用域.作用域将会对Bean的生命周期和创建方式产生影响. Bean的作用域类型: Singleton作用域是Spr ...
- Spring bean 的5个作用域 Spring Bean的默认作用域为:singleton。它相比其他作用域的优点是系统开销小,Bean实例一旦创建成功便可重复使用。 1.singleton作用域
Spring bean 的5个作用域 Spring Bean的默认作用域为:singleton.它相比其他作用域的优点是系统开销小,Bean实例一旦创建成功便可重复使用. 1.singleton作用域 ...
- spring之bean的作用域scope的值的详解
今天研究了一下scope的作用域.默认是单例模式,即 scope="singleton".另外scope还有prototype.request.session.global ses ...
- Spring中bean的五个作用域简介(转载)
Spring上个版本的IoC容器支持两个不同的bean作用域(单例与原型). Spring 2.0改进了这一点,不仅提供了一些依赖于Spring部署环境(比如说,在web环境中的request和ses ...
- Bean的作用域和生命周期-----Spring
1.之前学过的变量的作用域:是指变量在方法中或者作用域中的某种行为,现在我们来进行了解一下Bean的作用域 咱们的Java中的公共类称之为Bean或者是JavaBean,Spring对象中的生命周期指 ...
- 浅谈Spring的Bean生命周期和作用域
学习spring有一段时间了.有的人说Spring的发展就是Java的发展,Spring就是Java的半壁江山,而且AOP思想更是OOP思想的一种扩展和延申.所以今天来浅谈一下spring的生命周期和 ...
- spring之Bean的生命周期
Bean的生命周期: Bean的定义--Bean的初始化--Bean的使用--Bean的销毁 Bean的定义 Bean 是 Spring 装配的组件模型,一切实体类都可以配置成一个 Bean ,进而就 ...
最新文章
- Linux文件目录操作指令
- JavaScript中发布/订阅模式的理解
- 每日一笑 | 马冬梅当上了百度投资董事???
- node.js读写文件
- C++是一款设计非常失败的语言吗?
- 感慨公交车766路调整
- MySQL从字符串提取数字
- 西瓜书课后题——第四章(决策树)
- 数据挖掘期末复习01-02
- wsl 1 ubuntu 安装图像化界面
- web接入大华摄像头实时视频
- 区块链是什么通俗解释?
- 解决安装在虚拟机VMware的Ubuntu-18-04系统与主机之间的复制粘贴问题
- 性别符号php,树也分男女?给6万棵杨树画上性别符号,原来是因为…
- Java程序员的职业规划(五年)
- python的静态局部变量怎么定义
- batch—size的大小对loss收敛的影响
- Direct2D的使用(1)
- ADS滤波器设计向导工具一
- 如何使用ElementUI的table组件来实现单元格的行合并