博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring中的属性scope
阅读量:6877 次
发布时间:2019-06-26

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

  hot3.png

之 前在开发过程中遇到了一个问题,当request发起下一个请求的时候,action中的属性值并没有清除,而是继续采用上次使用过的参数值进行查询并响 应,导致数据查询不真实或失败。对此,有同事告诉我说,需要在spring配置文件的bean中添加属性scope=prototype。结果还真的有 用。

下面是我对spring的bean中scope属性的一些查询与总结:

默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性)

Singleton: Spring容器只存在一个共享的bean实例,是默认的配置。

Prototype: 每次对bean的请求都会创建一个新的bean实例。

二者选择的原则:有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用singleton作用域。

在 Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和 global session。

如果你希望容器里的某个bean拥有其中某种新的web作用域,除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。即在web应用的web.xml中增加这么一个ContextListener:

org.springframework.web.context.request.RequestContextListener 以上是针对Servlet 2.4以后的版本。比如Request作用域!

singleton 是单态模式的 ,有ioc容器管理 ,当然不是线程安全的啦 ,不过所谓的线程安全也是相对的,如果你的类是没有状态的, 那用singleton 的性能要高一些 ,因为只有一个实例 ;如果你的类是有状态的 ,那就必须显示的设置为prototype了。

在ssh2 项目中 , struts2的action交由spring管理的时候 ,spring默认是singleton的 ,而struts2的action显然是有状态的 ,所以必须显示设置为 scope=“prototype”

prototype为原型模式 , 每次action请求过来都会创建一个action

但是对那些Dao的实现类推介scope=“singleton” ,因为这些类没有状态,用singleton只需维护一个实例,显然性能高一些。

转载于:https://my.oschina.net/lgfei/blog/712068

你可能感兴趣的文章
解决打开文件夹是打开方式
查看>>
Android常用的一些服务demo源码
查看>>
Linux中Shell简介
查看>>
天狗论坛——论坛为什么选用 Amaze UI?
查看>>
JAVA_OPTS, JAVA_TOOL_OPTIONS,_JAVA_OPTIONS傻傻分不清楚
查看>>
SpringMVC结合Ajaxfileupload异步多文件上传至远程服务器
查看>>
Oracle的REDO和UNDO
查看>>
最新推出SAP ECC EHP7最新版本IDES带演示数据,带开发ACCESS KEY。
查看>>
详细探究Spark的shuffle实现
查看>>
云桌面技术展望
查看>>
openstack 制作winserver2008_R2镜像 用cloudbase-init 实现第一次创建就注入密码(需登录)...
查看>>
Tengine (淘宝nginx ) + tomcat 安装整合 后篇+ 高可用和负载均衡
查看>>
『AngularJS』创建 Service
查看>>
linux 修改桌面背景
查看>>
Quick Test Professional(UFT)Web Service 测试入门
查看>>
Ubuntu上手动安装sbt
查看>>
facebook首席运营谈成功经验
查看>>
资本倍增
查看>>
DataQL 的表达式编译(自创的一种表达式编译算法)
查看>>
9.29PMP每日一题
查看>>