比如,在spring的配置文件中,配置了如下的bean。
<bean id = "privilegeRoleBo"
class = "com.alibaba.tboss.biz.privilege.impl.PrivilegeRoleBoImpl"></bean>
上面的bean应该不是单例的,因为如果项目部署在集群上,集群的每台机器上都维护着一个名字为privilegeRoleBo的bean吧,这样的话,privilegeRoleBo这个bean就不是单例的吧?如果我要配置一个单例的bean,该如何配置呢?
另外,如何写一个小Demo,可以验证一下当前的bean是否是单例??
楼上回答是正确的,Java 的单例必须限定在一个 JVM 中,就像是
Servlet 只会存在一个实例
这句话也是限定在一个 JVM 中的,如果是多个 JVM 就会每个 JVM 存在一个实例。实际上,对于很多情况来说,实例不能在多个 JVM 上互相迁移不存在很大的问题,比如数据库连接或者是只读的配置文件信息类。但是如果想要多 JVM 同步,则必须使用其他的方法,比如文件锁、分布协调服务等等。打个比方,HttpSession 对象则是采用了 JVM 迁移的方式进行同步的。