spring容器中bean的作用域-编程开发技术

spring容器中bean的作用域-编程开发技术

ID:30792492

大小:60.50 KB

页数:3页

时间:2019-01-03

spring容器中bean的作用域-编程开发技术_第1页
spring容器中bean的作用域-编程开发技术_第2页
spring容器中bean的作用域-编程开发技术_第3页
资源描述:

《spring容器中bean的作用域-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Spring容器中Bean的作用域-编程开发技术Spring容器中Bean的作用域原文出处:摆渡者当通过Spring容器创建一个Bean实例时,不仅口J以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:•singleton:单例模式,在幣个SpringIoC容器屮,使用singleton定义的Bean将只有一个实例•prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例•request:对于每次HTTP请求,使用request定义的Bean都将产生

2、一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效•session:对于每次HTTPSession,使用session定义的Bean豆浆产生一个新实例。同样只冇在Web应用中使用Spring时,该作用域才冇效•globalsession:每个全局的HTTPSession,使用session定义的Bean都将产生一个新实例。肌型情况下,仅在使用portletcontext的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效其中比较常用的是singleton和prototype两种作用域。对于s

3、ingleton作用域的Bean,每次请求该Beem都将获得相同的实例。容器负责跟踪Beem实例的状态,负责维护Bean实例的生命周期行为;如杲一个Bean被设置成prototype作用域,程序每次请求该id的Bean,Spring都会新建一个Bean实例,然后返冋给程序。在这种情况下,Spring容器仅仅使用new关键字创建Bean实例,一旦创建成功,容器不在跟踪实例,也不会维护Bean实例的状态。如果不指定Bean的作用域,Spring默认使用singleton作用域。Java在创建J3V3实例时,需要进行内存屮请;销毁实例时,需要完成垃圾回收,这些工作都会导致

4、系统开销的增加。因此,prototype作用域Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean被设置成prototype作用域。设置Bean的基本彳亍为,通过scope属性指定,该属性叮以接受singleton、prototype、request、session、globlcscssionS个值,分别代表以上5种作用域。下面的配置片段中,singleton和prototype各有一个:

5、.Perso/>卜•而是一个测试类:publicclassBeanTest{publicstaticvoidmain(Stringargs[]){//加载类路径下的beans,xml文件以初始化Spring容器AppliestionContcxtcontcxt二newClassPathXmlApplicationContext();//分两次分别取同一个Bean,比较二者是否是同一个对象System,out.prin

6、tln(context.getBean(〃pl〃)--context.getBean(〃pl"));Systcm.out・printin(context・getBean(〃p2")==context.getBean(/zp2z/));}}执行结果分别是:true和false从结果可以看出,止如上文所述:对于singleton作用域的Bean,每次请求该id的Bean,都将返回同一个实例,而prototype作用域的Bean,每次请求都将产生全新的实例。注意:早期指定Bean的作用域也可通过singleton属性指定,该属性只接受两个属性值:true和false,分别

7、代表singleton和prototype的作用域。使用singleton属性则无法指定其他三个作用域。实际上Spring2.X不推荐使用singleton属性指定Bean的作用域,singleton属性是Spring1.2.X的使用方式。对于request作用域,查看如下Bean定义:针对每次HTTP请求,Spring容器会根据loginActionBecin定义创建一个全新的LoginAction实例,且该loginAction实

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。