比如,在spring的配置文件中,配置了如下的bean。
<bean id = "privilegeRoleBo"
class = "com.alibaba.tboss.biz.privilege.impl.PrivilegeRoleBoImpl"></bean>
上面的bean应该不是单例的,因为如果项目部署在集群上,集群的每台机器上都维护着一个名字为privilegeRoleBo的bean吧,这样的话,privilegeRoleBo这个bean就不是单例的吧?如果我要配置一个单例的bean,该如何配置呢?
另外,如何写一个小Demo,可以验证一下当前的bean是否是单例??
La réponse ci-dessus est correcte. Les singletons Java doivent être limités à une JVM Tout comme
Servlet 只会存在一个实例
cette phrase est également limitée à une JVM. S'il y a plusieurs JVM, il y en aura une pour chaque exemple de JVM. En fait, dans de nombreux cas, il n'y a pas de problème majeur lié au fait que les instances ne peuvent pas être migrées entre plusieurs JVM, comme les connexions à une base de données ou les classes d'informations de fichiers de configuration en lecture seule. Mais si vous souhaitez synchroniser plusieurs JVM, vous devez utiliser d'autres méthodes, telles que les verrous de fichiers, les services de coordination de distribution, etc. Par exemple, l'objet HttpSession est synchronisé à l'aide de la migration JVM.Le singleton au niveau du langage Java fait référence à la même JVM, et le cluster ne peut pas être utilisé. Si le singleton que vous souhaitez configurer est destiné au partage de données, les données doivent être stockées dans une base de données ou dans un endroit comme redis
Le problème des singletons de cluster a été mentionné ci-dessus. Laissez-moi vous expliquer comment vérifier si le bean actuel est un singleton. Vous pouvez exécuter le projet en mode débogage, envoyer deux requêtes et vérifier les
privilegeRoleBo
utilisés. le bean s'adresse à la même chose ? Si oui, ce sont des singletonsle bean a une portée de propriété