Spring学习记录(五)---bean的作用域scope
作用域:
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的更多相关文章
- Spring学习记录(八)---Bean的生命周期
之前说过,在调用下面时,就创建了容器和对象 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml&quo ...
- Spring学习记录(四)---bean之间的关系:继承、依赖
继承 这里说的继承和java的继承是不一样的,不是父类子类.但思想很相似,是父bean和子bean 1.父bean是一个实例时.它本身是一个完整的bean 2.父bean是模板,抽象bean ...
- Spring学习记录(三)---bean自动装配autowire
Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系,少写几个ref autowire: no ---默认情况,不自动装配,通过ref手动引用 byName---根据 ...
- 我的Spring学习记录(五)
在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...
- Spring 学习记录8 初识XmlWebApplicationContext(2)
主题 接上文Spring 学习记录7 初识XmlWebApplicationContext refresh方法 refresh方法是定义在父类AbstractApplicationContext中的. ...
- Spring 学习记录6 BeanFactory(2)
主题 除了Spring 学习记录5 BeanFactory 里写的几个接口外,BeanFactory的实现类还实现了一些其他接口,这篇文章主要介绍这些接口和实现类. 结构 DefaultListabl ...
- 我的Spring学习记录(二)
本篇就简单的说一下Bean的装配和AOP 本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用sett ...
- 我的Spring学习记录(四)
虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...
- spring 学习(五):spring 事务
spring 学习(五):spring 事务 事务概要 一个数据库事务通常包含了一个序列的对数据库的读/写操作.它的存在包含有以下两个目的: 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同 ...
随机推荐
- 【转】SSL协议、SET协议、HTTPS简介
一.SSL协议简介 SSL是Secure Socket Layer的缩写,中文名为安全套接层协议层.使用该协议后,您提交的所有数据会首先加密后,再提交到网易邮箱,从而可以有效防止黑客盗取您的用户名.密 ...
- 【转】CentOS上部署PPTP和L2TP over IPSec简要笔记
PPTP部署 安装 PPTP 需要 MPPE 和较高版本的 ppp ( > 2.4.3 ) 支持,不过 CentOS 5.0/RHEL 5 的 2.6.18 内核已经集成了 MPPE 和高版本的 ...
- [资料分享]7天搞定Node.js微信公众号开发
- unity 协程
StartCoroutine在unity3d的帮助中叫做协程,意思就是启动一个辅助的线程. 在C#中直接有Thread这个线程,但是在unity中有些元素是不能操作的.这个时候可以使用协程来完成. 使 ...
- 解决jquery新加入的元素没有绑定事件问题
在使用jquery操作时,往往需要动态的添加一些元素,但是这些新加入的元素并没有像css那样被赋予原本定义的样式,解决方法如下: 1.动态插入元素后,并用bind事件给新加入的元素绑定事件. 2.如果 ...
- js学习笔记
javacript笔记根据EC5.0一共有六种数据类型:number,string,bool undefine,nullobject(广义的) --->object(狭义的),array,fun ...
- ubuntu环境下vmware取消自动启动服务
概述其实vmware这个服务取不取消,影响不大,主要是我有强迫症,在不用虚拟机的时候,看着vmware占着进程真心不爽,想要解决这个问题,在用虚拟机的时候启动服务,反之,则停.接下来,我说一下实现吧. ...
- .net 文件上传大小的设置
直接在配置文件web.config 中进行如下配置,主要需要明白的就是 配置的 单位是 Byte, 所以一定计算清楚,不然会在这里纠结很久!!! <configuration> < ...
- centos上安装pygame
安装前依赖包检查及安装 python-devel SDL_image-devel SDL_mixer-devel SDL_ttf-devel SDL-devel numpy subversion po ...
- 理解MVC,MVP和MVVM设计模式
有3个非常受欢迎的MV-*系列设计模式:MVC,MVP,MVVM.他们被广泛应用于不多种结束.这篇文章我回阐述我自己对这3个设计模式的看法. MVC模式: MVC即Model-VIew-Control ...