精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-22
小弟是新手,真心求教,谢谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-07-22
Spring默认的bean就是Singleton,也就是无状态的bean,说白了全程只有这一个实例,那当然不是线程安全了。
|
|
返回顶楼 | |
发表时间:2010-07-22
刚刚看spring,好像是说.
区别singleton的作用范围在ioc容器. |
|
返回顶楼 | |
发表时间:2010-07-22
用静态类没有你想象的方便,哪天你做测试时发现这个类依赖一堆静态类没法Mock掉就会骂娘了。
|
|
返回顶楼 | |
发表时间:2010-07-22
singleton是单态模式的 ,有ioc容器管理 ,当然不是线程安全的啦 ,不过所谓的线程安全也是相对的
如果你的类是没有状态的, 那用singleton 的性能要高一些 ,因为只有一个实例 。 如果你的类是有状态的 ,那就必须显示的设置为prototype了 在ssh2 项目中 , struts2的action交由spring管理的时候 ,spring默认是singleton的 ,而struts2的action显然是有状态的 ,所以必须显示设置为 scope=“prototype” prototype为原型模式 , 每次action请求过来都会创建一个action 但是对那些Dao的实现类推介scope=“singleton” ,因为这些类没有状态,用singleton只需维护一个实例,显然性能高一些 |
|
返回顶楼 | |
发表时间:2010-07-22
线程安全并不是取决于是不是单例
|
|
返回顶楼 | |
发表时间:2010-07-22
呵呵 ,首先spring中的singleton和23中设计模式中的singletong是不同的。确切的说spring中的应该叫单对象。不是严格意义上的单例模式。
|
|
返回顶楼 | |
发表时间:2010-07-22
笑我痴狂 写道 singleton是单态模式的 ,有ioc容器管理 ,当然不是线程安全的啦 ,不过所谓的线程安全也是相对的
如果你的类是没有状态的, 那用singleton 的性能要高一些 ,因为只有一个实例 。 如果你的类是有状态的 ,那就必须显示的设置为prototype了 在ssh2 项目中 , struts2的action交由spring管理的时候 ,spring默认是singleton的 ,而struts2的action显然是有状态的 ,所以必须显示设置为 scope=“prototype” prototype为原型模式 , 每次action请求过来都会创建一个action 但是对那些Dao的实现类推介scope=“singleton” ,因为这些类没有状态,用singleton只需维护一个实例,显然性能高一些 请教一下,你们说的类有状态没有状态是什么意思呢? 如果一个DAO设置为单例模式,有2个竞争线程a,b同时访问这个DAO中的一个方法,不是有可能将a线程的调用结果返回给b线程吗? 难道要将dao里面的方法都加锁吗? |
|
返回顶楼 | |
发表时间:2010-07-22
matlab5y5 写道 笑我痴狂 写道 singleton是单态模式的 ,有ioc容器管理 ,当然不是线程安全的啦 ,不过所谓的线程安全也是相对的
如果你的类是没有状态的, 那用singleton 的性能要高一些 ,因为只有一个实例 。 如果你的类是有状态的 ,那就必须显示的设置为prototype了 在ssh2 项目中 , struts2的action交由spring管理的时候 ,spring默认是singleton的 ,而struts2的action显然是有状态的 ,所以必须显示设置为 scope=“prototype” prototype为原型模式 , 每次action请求过来都会创建一个action 但是对那些Dao的实现类推介scope=“singleton” ,因为这些类没有状态,用singleton只需维护一个实例,显然性能高一些 请教一下,你们说的类有状态没有状态是什么意思呢? 如果一个DAO设置为单例模式,有2个竞争线程a,b同时访问这个DAO中的一个方法,不是有可能将a线程的调用结果返回给b线程吗? 难道要将dao里面的方法都加锁吗? 1.可操作属性 比如 UserDAO 里面有一个name属性。两个线程同时操作这一个属性。就可能引发一些问题。 2.这是不可能的。去看看jvm一些基本规范。 3.不用,看具体情况。 |
|
返回顶楼 | |
发表时间:2010-07-23
IcyFenix 写道 用静态类没有你想象的方便,哪天你做测试时发现这个类依赖一堆静态类没法Mock掉就会骂娘了。
为了Mock掉, 赞! |
|
返回顶楼 | |