博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Bean的作用域(转)
阅读量:5723 次
发布时间:2019-06-18

本文共 1152 字,大约阅读时间需要 3 分钟。

 

.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

 

你可能感兴趣的文章
Medusa:比CPython更快的Python实现
查看>>
Docker宣布企业版支持Windows Server 2019
查看>>
.NET Core 2.0 Preview 2为开发人员带来改进
查看>>
如何理解“Unix里一切都是文件”这句话?
查看>>
七牛李倩:⼯程效率如何为研发赋能
查看>>
微软宣布Azure Functions正式支持Java
查看>>
实战SpringMVC+Mybatis搭建高性能安全站点
查看>>
Minikube在Mac上搭建PHP容器集群
查看>>
作为前端开发,如何写好一个简历
查看>>
常用的ES6
查看>>
可应用于实际的14个NLP突破性研究成果(三)
查看>>
ASM卷加盘
查看>>
Java中的泛型方法
查看>>
秋色园QBlog技术原理解析:页面Post提交机制(十一)
查看>>
PowerShell挂起功能--Confirm参数
查看>>
利用PowerShell创建事件日志
查看>>
Exchange2013与Office365做Exchange Online混合部署(二)之账号管理
查看>>
WPF对决Silverlight:为项目选择最佳技术
查看>>
Hyper-V Server共享VHDX
查看>>
WinCE6.0学习之EBoot源码分析----startup.s
查看>>