本章案例基于上节,看不懂的请先看上节——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的管理(二)相关推荐

  1. spring容器bean的作用域 spring容器是否是单例的一些问题

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

  2. spirng4.0-@Conditional 按条件注册bean、@Import导入组件bean、@FactoryBean spring的bean工厂注册bean

    一.组件说明 @Conditional({xxx.class, xxx.class}),可用在方法和类上面 按照一定的条件进行判断,把满足条件的bean注册到springIOC容器中. @Import ...

  3. JAVA Spring Shiro mybaits 后台管理 二次开发框架 OA ERP CMS 微信 IM即时通讯(websocket)

    系统架构图 目标: 1:提升开发效率,规范开发标准 2:提高质量,降低复杂度 3:打造一个开发简单.效率快..性能好.. 易上手的框架 兼容性: 1:设备:兼容IPAD,手机,电脑,笔记本等等 2:界 ...

  4. spring bean作用域_Srping中Bean的三种装配方式:大魏Java记10

    一.Bean的作用域 Spring在初始化一个Bean实例时,可以同时为其指定特定的作用域.作用域将会对Bean的生命周期和创建方式产生影响. Bean的作用域类型: Singleton作用域是Spr ...

  5. Spring bean 的5个作用域 Spring Bean的默认作用域为:singleton。它相比其他作用域的优点是系统开销小,Bean实例一旦创建成功便可重复使用。 1.singleton作用域

    Spring bean 的5个作用域 Spring Bean的默认作用域为:singleton.它相比其他作用域的优点是系统开销小,Bean实例一旦创建成功便可重复使用. 1.singleton作用域 ...

  6. spring之bean的作用域scope的值的详解

    今天研究了一下scope的作用域.默认是单例模式,即 scope="singleton".另外scope还有prototype.request.session.global ses ...

  7. Spring中bean的五个作用域简介(转载)

    Spring上个版本的IoC容器支持两个不同的bean作用域(单例与原型). Spring 2.0改进了这一点,不仅提供了一些依赖于Spring部署环境(比如说,在web环境中的request和ses ...

  8. Bean的作用域和生命周期-----Spring

    1.之前学过的变量的作用域:是指变量在方法中或者作用域中的某种行为,现在我们来进行了解一下Bean的作用域 咱们的Java中的公共类称之为Bean或者是JavaBean,Spring对象中的生命周期指 ...

  9. 浅谈Spring的Bean生命周期和作用域

    学习spring有一段时间了.有的人说Spring的发展就是Java的发展,Spring就是Java的半壁江山,而且AOP思想更是OOP思想的一种扩展和延申.所以今天来浅谈一下spring的生命周期和 ...

  10. spring之Bean的生命周期

    Bean的生命周期: Bean的定义--Bean的初始化--Bean的使用--Bean的销毁 Bean的定义 Bean 是 Spring 装配的组件模型,一切实体类都可以配置成一个 Bean ,进而就 ...

最新文章

  1. Linux文件目录操作指令
  2. JavaScript中发布/订阅模式的理解
  3. 每日一笑 | 马冬梅当上了百度投资董事???
  4. node.js读写文件
  5. C++是一款设计非常失败的语言吗?
  6. 感慨公交车766路调整
  7. MySQL从字符串提取数字
  8. 西瓜书课后题——第四章(决策树)
  9. 数据挖掘期末复习01-02
  10. wsl 1 ubuntu 安装图像化界面
  11. web接入大华摄像头实时视频
  12. 区块链是什么通俗解释?
  13. 解决安装在虚拟机VMware的Ubuntu-18-04系统与主机之间的复制粘贴问题
  14. 性别符号php,树也分男女?给6万棵杨树画上性别符号,原来是因为…
  15. Java程序员的职业规划(五年)
  16. python的静态局部变量怎么定义
  17. batch—size的大小对loss收敛的影响
  18. Direct2D的使用(1)
  19. ADS滤波器设计向导工具一
  20. 如何使用ElementUI的table组件来实现单元格的行合并

热门文章

  1. 【DL小结5】Transformer模型与self attention
  2. sublime text3 错误解决
  3. web javescript与cookie理解
  4. Fuzzing技术分析
  5. Linux数据管理——文件锁定
  6. python 初级笔记
  7. 洛谷P1005 矩阵取数游戏
  8. Android学习(十二) ContentProvider
  9. IIS5.1、IIS6.0、IIS7.5中安装配置MVC 3
  10. Arcgis Android - HelloWorld