spring中配置的bean是单例么?如何证明

发布于 2022-09-03 09:34:02 字数 353 浏览 15 评论 0

比如,在spring的配置文件中,配置了如下的bean。

<bean id = "privilegeRoleBo" 
    class = "com.alibaba.tboss.biz.privilege.impl.PrivilegeRoleBoImpl"></bean>

上面的bean应该不是单例的,因为如果项目部署在集群上,集群的每台机器上都维护着一个名字为privilegeRoleBo的bean吧,这样的话,privilegeRoleBo这个bean就不是单例的吧?如果我要配置一个单例的bean,该如何配置呢?
另外,如何写一个小Demo,可以验证一下当前的bean是否是单例??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

盛装女皇 2022-09-10 09:34:02

楼上回答是正确的,Java 的单例必须限定在一个 JVM 中,就像是 Servlet 只会存在一个实例这句话也是限定在一个 JVM 中的,如果是多个 JVM 就会每个 JVM 存在一个实例。实际上,对于很多情况来说,实例不能在多个 JVM 上互相迁移不存在很大的问题,比如数据库连接或者是只读的配置文件信息类。但是如果想要多 JVM 同步,则必须使用其他的方法,比如文件锁、分布协调服务等等。打个比方,HttpSession 对象则是采用了 JVM 迁移的方式进行同步的。

偏闹i 2022-09-10 09:34:02

java语言层面的单例说的是同一个jvm里面,集群没办法搞。如果你想设置的单例目的是为了数据共享,那数据存数据库或是redis之类的地方

一萌ing 2022-09-10 09:34:02

集群单例的问题楼上已经说了,我说说怎么验证当前的bean是否是单例,你可以在把项目跑起来 开debug模式,发送两次请求,查看使用的privilegeRoleBo这个bean的地址是不是一样的,如果一样就是单例的

嗳卜坏 2022-09-10 09:34:02

bean有一个属性scope

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文