Spring Bean的作用域(转)
.singleton [单例] eg:<bean id="personService" class="com.yinger.service.impl.PersonServiceBean" scope="singleton"></bean>
在每个Spring IoC容器中一个bean定义只有一个对象实例。
请注意Spring的singleton bean概念与“四人帮”(GoF)模式一书中定义的Singleton模式是完全不同的。
经典的GoF Singleton模式中所谓的对象范围是指在每一个ClassLoader
中指定class创建的实例有且仅有一个。
把Spring的singleton作用域描述成一个container
对应一个bean实例最为贴切。亦即,假如在单个Spring容器内定义了某个指定class的bean,
那么Spring容器将会创建一个且仅有一个由该bean定义指定的类实例。
默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。
如:<bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下:
<beans default-lazy-init="true“ ...>
.prototype [原型]
每次从容器获取bean都是新的对象。
对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责:容器在初始化、配置、装饰或者是
装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法。
但对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,
都是客户端代码的职责。(让Spring容器释放被prototype作用域bean占用资源的一种可行方式是,通过使用bean的后置处理器,该处理器持有要被清除的bean的引用。)
以下的三种scope只是在web应用中才可以使用
.request
.session
.global session
使用这三种配置之前要先初始化Web配置
http://www.cnblogs.com/njtcy/p/3328076.html
最新文章
- Jmeter发送Java请求
- 近期博客内容的规划(关于Swift语言)
- mysql配置mysql-proxy读写分离
- 自己开发的csdn手机客户端
- 数据库SQL语句练习题5--9
- Mac os 10.9下面配置JAVA_HOME
- 纪录参加noip2015(pj+tg)复赛
- 安卓自写Adapter
- IC卡接口芯片TDA8007的读写器设计
- 转载Mvc的多层架构
- ASP.NET MVC5 实现分页查询
- 浅谈聚类算法(K-means)
- Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版
- Selenium+Python进行web自动化测试(Demo+API)
- eoLinker API-Shop 抓住区块链机遇,从这些API开始
- range 小数据池介绍
- camera驱动框架分析(上)【转】
- TortoiseGit推送代码到Gerrit的过程
- 使用mockserver来进行http接口mock
- Alpha 冲刺五
热门文章
- Delphi使用StrToDatetime在不同操作系统出现不同的情况(控制面板的时间格式都记录在注册表里,因此也可修改注册表)
- urllib2的异常处理
- KMP算法(具体求串的next[n])
- Java抓取网页数据(原来的页面+Javascript返回数据)
- Java程序员须知的七个日志管理工具(转)
- Flex与Java交互(Flex调用java类展示数据)解析xml展示数据
- ubuntu12.04下搭建ftpserver
- ZOJ3805:Machine
- 理解Spring的Bean工厂
- 浅谈 PHP 变量可用字符