java - spring中配置的bean是单例么?如何证明
PHPz
PHPz 2017-04-18 09:42:21
0
4
568

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

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

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

PHPz
PHPz

学习是最好的投资!

全部回覆(4)
Ty80

樓上答案是正確的,Java 的單例必須限定在一個 JVM 中,就像是 Servlet 只会存在一个实例這句話也是限定在一個 JVM 中的,如果是多個 JVM 就會每個 JVM 存在一個實例。實際上,對於許多情況來說,實例不能在多個 JVM 上互相遷移不存在很大的問題,例如資料庫連接或是唯讀的設定檔資訊類別。但如果想要多 JVM 同步,則必須使用其他的方法,例如檔案鎖、分佈協調服務等等。打個比方,HttpSession 物件則是採用了 JVM 遷移的方​​式進行同步的。

巴扎黑

java語言層面的單例說的是同一個jvm裡面,集群沒辦法搞。如果你想設定的單例目的是為了資料共享,那麼資料存資料庫或是redis之類的地方

刘奇

集群單例的問題樓上已經說了,我說說怎麼驗證當前的bean是否是單例,你可以在把項目跑起來開debug模式,發送兩次請求,查看使用的privilegeRoleBo這個bean的地址是不是一樣的,如果一樣就是單例的

刘奇

bean有一個屬性scope

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板