Spring单例的Action Bean的成员属性的使用注意
程序员文章站
2022-05-23 11:41:47
...
今天在做系统优化查看生产环境日志的时候发现一个java.util.ConcurrentModificationException异常,在网上查看异常原因后,以为是这段代码的逻辑问题(在对ArrayList做迭代时对其进行了修改),后来找到对应的代码(在一个Action里)并没有发现导至这个异常对应的代码。
再仔细查看后发现被迭代的ArrayList对象属于类的成员属性,那么问题就找到了:当第一个用户访问这个Action方法正在对这个ArrayList做迭代时,另一个用户恰巧也访问的了这个Action对并对上个用户正在做迭代的对象做了修改(删除元素等),因为项目中Spring指定的Bean的模式是单例的,所以多次访问到的是同一个Bean实体对象,类的成员属性是“共享”的,就导至了上述的问题。
解决:先注掉对应的类的成员属性,有需要使用的地方重新new一个对象,之后本地测试没问题。
java.util.ConcurrentModificationException异常的详细说明:
http://www.cnblogs.com/dolphin0520/p/3933551.html
上一篇: OSGi集成iBatis
下一篇: <深入java虚拟机>学习笔记
推荐阅读
-
关于Spring Bean实例过程中使用反射和递归处理的Bean属性填充问题
-
spring中向一个单例bean中注入非单例bean的方法详解
-
Spring如何解决单例bean线程不安全的问题
-
Spring中Bean的作用域?单例模式是否是线程安全的?
-
深入了解Spring源码4:懒加载的单例Bean获取过程分析
-
使用了单例模式的类,有一些关于其静态成员的有关问题
-
Spring 单例模式bean 中引用原型模式bean的一些考虑
-
初学Spring——Bean的作用域(singleton单例+prototype原型)
-
Spring单例的Action Bean的成员属性的使用注意
-
Spring源码-创建单例bean的过程