引用

这就是我的困惑所在。我们都知道,可以用无状态的 Singleton 来封装一些领域服务。比如说,UserService,就可以是一个 Singleton class。在实际使用时,可以用 IoC 容器的依赖注入方法得到它的一个(全 JVM 唯一的)Singleton 实例,然后再调用它里面的方法,比如说:


Singleton 并不是这样的吧 他只是在 servletcontext里面保存了这么一份 beans
每个request过来的时候,使用的是threadlocal
threadlocal 可以说是“拷贝”了 servletcontext里面的beans
可以说是一个副本
这样可以保证多个request使用的beans互相不影响(具体可以理解一下threadlocal )

threadlocal 的实现本身就类似 对象池 ,不过这个东西是语言支持的,而不是自己来实现的。
你说的synchronize 在一般bean上都不会起作用,原理也是这样 用的根本不是同一个对象(static得注意),除非在同一个request中存在多次调用产生 synchronize 现象。

引用
(全 JVM 唯一的)Singleton 实例
是否你的理解出偏差了呢?
评论
发表评论

您还没有登录,请登录后发表评论

jianfeng008cn
搜索本博客
我的相册
11f2e450-fb73-39c2-8124-8f1fda304b90-thumb
旋转 SNV10095
共 1 张
存档
最新评论