作用域:
singleton:单例,整个应用中只创建一个实例(默认)

prototype:原型,每次注入时都新建一个实例

session:会话,每个会话创建一个实例

request:请求,每个请求创建一个实例

默认情况下,bean都是单例的,在下面这样时初始化,调用各个bean的构造函数

  <bean id="person" class="com.guigu.spring.autowire.Person"
p:name="Tom" ></bean>
//相当于:
<bean id="person" class="com.guigu.spring.autowire.Person"
p:name="Tom" scope="singleton"></bean>
   ApplicationContext ctx = new ClassPathXmlApplicationContext("scope.xml");  //这里初始化,调用bean的构造函数
Person person1 = (Person) ctx.getBean("person");
Person person2 = (Person) ctx.getBean("person");
system.out.println(person1 == person2); //结果:true

在第一行时,就调用了构造函数,实例化了对象,并且只有一个对象。 person1 和person2其实是同一个对象

若是原型

   <bean id="person" class="com.guigu.spring.autowire.Person"
p:name="Tom" scope="prototype"></bean>

同样,两次调用,结果会是false

    ApplicationContext ctx = new ClassPathXmlApplicationContext("scope.xml");  //这里初始化,但此时不创建实例
Person person1 = (Person) ctx.getBean("person");
Person person2 = (Person) ctx.getBean("person");
system.out.println(person1 == person2); //结果:false

prototype规定,容器初始化时,不会自动创建实例,而是调用它时才创建。调用了两次,就创建了两个实例。

session:在一哥session会话中,是同一个bean,不同session就是不同bean

request:每一个HTTP请求生成一个新的bean

Spring学习记录(五)---bean的作用域scope的更多相关文章

  1. Spring学习记录(八)---Bean的生命周期

    之前说过,在调用下面时,就创建了容器和对象 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml&quo ...

  2. Spring学习记录(四)---bean之间的关系:继承、依赖

         继承 这里说的继承和java的继承是不一样的,不是父类子类.但思想很相似,是父bean和子bean 1.父bean是一个实例时.它本身是一个完整的bean 2.父bean是模板,抽象bean ...

  3. Spring学习记录(三)---bean自动装配autowire

    Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系,少写几个ref autowire: no ---默认情况,不自动装配,通过ref手动引用 byName---根据 ...

  4. 我的Spring学习记录(五)

    在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...

  5. Spring 学习记录8 初识XmlWebApplicationContext(2)

    主题 接上文Spring 学习记录7 初识XmlWebApplicationContext refresh方法 refresh方法是定义在父类AbstractApplicationContext中的. ...

  6. Spring 学习记录6 BeanFactory(2)

    主题 除了Spring 学习记录5 BeanFactory 里写的几个接口外,BeanFactory的实现类还实现了一些其他接口,这篇文章主要介绍这些接口和实现类. 结构 DefaultListabl ...

  7. 我的Spring学习记录(二)

    本篇就简单的说一下Bean的装配和AOP 本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用sett ...

  8. 我的Spring学习记录(四)

    虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...

  9. spring 学习(五):spring 事务

    spring 学习(五):spring 事务 事务概要 一个数据库事务通常包含了一个序列的对数据库的读/写操作.它的存在包含有以下两个目的: 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同 ...

随机推荐

  1. js转盘抽奖

    这个是很简易的转盘,只用了html,css,js 通过css产生一个转盘上的指针,用js动态改变css中的transparent改变指针的角度.再添加一个背景图片类似于奖项的转盘 <!DOCTY ...

  2. scikit-learn包的学习资料

    http://scikit-learn.org/stable/modules/clustering.html#k-means http://my.oschina.net/u/175377/blog/8 ...

  3. bzoj 4330: JSOI2012 爱之项链

    听说这题不公开.. 那就不贴题意了 首先要用burnside引理求出戒指的种数,那么对于一个顺时针旋转$k$个位置的置换就相当于连上一条$(i,(i+k)%R)$的边,每个环颜色必须相同 环的个数为$ ...

  4. HDU5618 & CDQ分治

    Description: 三维数点 Solution: 第一道cdq分治...感觉还是很显然的虽然题目不能再傻逼了... Code: /*=============================== ...

  5. storm 入门原理介绍

    1.hadoop有master与slave,Storm与之对应的节点是什么? 2.Storm控制节点上面运行一个后台程序被称之为什么? 3.Supervisor的作用是什么? 4.Topology与W ...

  6. Python新建动态命名txt文件

    # -*- coding: utf-8 -*- import os,sys,time fname=r"D:\01-学习资料\python" def GetNowTime():#获取 ...

  7. Odoo 报表中添加空格

    如果  不起作用,请用 代替.

  8. C++迪杰斯特拉算法求最短路径

    一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...

  9. hadoop+tachyon+spark的zybo cluster集群综合配置

    1.zybo cluster 架构简述: 1.1 zybo cluster 包含5块zybo 开发板组成一个集群,zybo的boot文件为digilent zybo reference design提 ...

  10. WPF整理-二进制资源和内容

    WPF中的Binary Resource(二进制资源)是相对于前面所说的Logical resource(逻辑资源)而说的,一般指Image.XML文件等. 注意:这里说的是Resource" ...