<bean id="meetAction" class="com.web.actions.MeetsAction"
 scope="prototype">
 <property name="meetsService" ref="meetsService" />
</bean>
<!--
scope="prototype"没写的问题,项目中对一个表的增删该操作是用一个action,这个action有add,update,delete,save这些方法,

添加和修改是共用一个页面,当页面得到id时代表进行的修改操作,反之是添加操作。因为在配置spring的bean是忘了写scope="prototype"

所以每次添加时都显示最后一次访问过的记录,scope="prototype" 会在该类型的对象被请求

时创建一个新的action对象。如果没有配置scope=prototype则添加的时候不会新建一个action,他任然会保留上次访问的过记录的信息

webwork的Action不是线程安全的,要求在多线程环境下必须是一个线程对应一个独立的实例,不能使用singleton。

所以,我们在Spring配置Webwork Action Bean时,需要加上属性scope=”prototype”或singleton=”false”。
singleton模式指的是对某个对象的完全共享,包括代码空间和数据空间,说白了,如果一个类是singleton的,

假如这个类有成员变量,那么这个成员变量的值是各个线程共享的(有点类似于static的样子了),当线程A往给变量赋了一个值以后,

线程B就能读出这个值。因此,对于前台Action,肯定不能使用singleton的模式,必须是一个线程请求对应一个独立的实例。推而广之,

只要是带数据成员变量的类,为了防止多个线程混用数据,就不能使用singleton。对于我们用到的Service、Dao,之所以用了singleton,

就是因为他们没有用到数据成员变量,如果谁的Service需要数据成员变量,请设置singleton=false。

默认情况下,从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作用域!

引用:http://wdlisoft.javaeye.com/blog/479049

singleton是单态模式的 ,有ioc容器管理 ,当然不是线程安全的啦 ,不过所谓的线程安全也是相对的

如果你的类是没有状态的, 那用singleton 的性能要高一些 ,因为只有一个实例 。
如果你的类是有状态的 ,那就必须显示的设置为prototype了

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

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

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

转载于:https://blog.51cto.com/alinazh/1274368

页面每次添加都显示最后一次访问记录spring scope=prototype 学习笔记相关推荐

  1. 1分钟解决VS每次运行都显示“正在还原nuget程序包”问题

    1分钟解决VS每次运行都显示"正在还原nuget程序包"问题 参考文章: (1)1分钟解决VS每次运行都显示"正在还原nuget程序包"问题 (2)https: ...

  2. ubuntu16.04 每次开机都显示“System program problem detected”

    问题:ubuntu16.04  每次开机都显示"System program problem detected",如下图所示: 解决办法: 在终端输入以下命令: sudo gedi ...

  3. juyter显示决策树图形_关于决策树可视化的treePlotter(学习笔记)

    网上的版本好像好久都没更新了treePlotter是没有人用了么.今天学习的时候发现有些地方已经改了,我改的是在python 3.6 上的运行版本,需要导入matplotlib.pyplot impo ...

  4. 45 WebGL在页面上添加hud显示

    案例查看地址:点击这里 平视显示器(head up display)简称HUD,最早用于飞机驾驶.平视显示器将一些重要信息投射到飞机驾驶舱前方的一块玻璃上,飞行员能够将外界的影像和这些重要的信息融合在 ...

  5. 计算机 最后 一次 开机时间 win 7,Win7如何每次开机都显示上次登录时间?开机显示上次开机时间方法...

    有时候我们不想他人对自己的电脑进行设置,或查看里面的文件资料,那么有什么方法可以让我们快速的知道电脑有没有被人动过呢?其实Win7系统中有一个功能,可以显示上一次登录的时间,这样就可以知道到底有没有被 ...

  6. Ubuntu每次启动都显示System program problem detected的解决办法

    方法1: sudo rm -rf /var/crash/* 方法2: sudo gedit /etc/default/apport 将enabled=1改为enabled=0保存退出即可 两种方法选择 ...

  7. Spring Boot基础学习笔记10:配置国际化页面

    文章目录 零.学习目标 1.掌握使用Thymeleaf配置国际化页面 2.掌握Thymeleaf复杂数据的展示 一.使用Thymeleaf配置国际化页面 (一)创建Spring Boot项目 - Th ...

  8. pythonlist循环添加元素_list.append()在for循环中每次添加的都是最后的一个元素汗血宝马...

    先贴出源码吧,这段代码我想返回一个list,list中的元素由N个dict组成, dict中会包含目录下文件的名称,大小和最后修改时间(ps.大小和最后修改时间没有贴出来) 1 2 3 4 5 6 7 ...

  9. * 完成随机点名案例;学生姓名都提前写在文件中;:每次敲回车,随机显示一个学生姓名,每人最多显示一次,所有人都显示完了就结束程序;

    import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOExce ...

最新文章

  1. DNS自述:我是如何为域名找到家的
  2. Tom's Classes
  3. iOS开发里的Bundle是个啥玩意?!
  4. Node.js 应用的内存泄漏问题的检测方法
  5. elasticsearch-head 安装
  6. 好饭不怕晚,扒一下 Redis 的配置文件
  7. 将NGINX Plus配置为Web服务器
  8. 【C语言】scanf()输入浮点型数据
  9. linux怎么安装scp服务,linux下ssh安装与scp命令使用详解
  10. python装第三方库有几种方法_Python安装第三方库的4种方法
  11. 帮Python找“对象”
  12. rgba和hex之间转换
  13. 实体书回暖?码洋过10,000,000的随想
  14. STM32程序烧录方式总结
  15. 企业业务的 WPA3 安全性为啥如此重要?
  16. 台式计算机windows7系统怎么做,台式电脑如何安装win7系统
  17. 简单易懂!!shell循环语句!for、while、until
  18. 服务器一键系统,一键安装服务器系统
  19. switch确定某天是该年第几天
  20. Python学习手札01——二分法求值问题

热门文章

  1. Java校招笔试题-Java基础部分(六)
  2. Rust中mut, , mut的区别
  3. Solaris11 磁盘分区
  4. 面向对象六大原则详解
  5. 分布式事务模型--Saga
  6. python常用模块-time和datatime
  7. 公司申请了网易企业电子邮箱,用手机端办公方便吗?
  8. PYTHON——多线程:Thread类与线程函数
  9. hbase hbck的参数使用
  10. window下遍历并修改文件