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

比如,在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

上記の答えは正しいです。Servlet 只会存在一个实例 と同様に、この文も JVM ごとに 1 つずつ制限されます。実際、多くの場合、データベース接続や読み取り専用の構成ファイル情報クラスなど、複数の JVM 間でインスタンスを移行できないという大きな問題はありません。ただし、複数の JVM を同期する場合は、ファイル ロック、配布調整サービスなどの他の方法を使用する必要があります。たとえば、HttpSession オブジェクトは、JVM 移行を使用して同期されます。

いいねを押す +0
巴扎黑

Java言語レベルのシングルトンは同じjvmを参照しており、クラスタは使用できません。設定したいシングルトンがデータ共有用である場合、データはデータベースまたは redis のような場所に保存する必要があります

いいねを押す +0
刘奇

クラスターのシングルトンの問題については、デバッグ モードでプロジェクトを実行し、2 つのリクエストを送信して、使用されている privilegeRoleBo を確認する方法について説明します。 Bean のアドレスが同じである場合、それらはシングルトンです

いいねを押す +0
刘奇

Bean にはプロパティ スコープがあります

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート