为什么不同客户端的数据不与单例bean混合

问题描述 投票:0回答:1

我是springboot学习新手,所以有一个问题。这个问题可能看起来有点傻,在提问之前我对此感到抱歉。

我读到,具有单例作用域的 bean 在容器中仅创建一次。现在我的问题是,例如,如果一个应用程序有一个名为“Student”的 bean。现在这个应用程序有 100 名不同的学生同时访问。这个bean如何在只有一个实例的情况下同时保存100个不同登录学生的数据?为什么它不混合所有学生的数据?

java spring-boot javabeans
1个回答
3
投票

如果一个对象要保存单独的数据,它不能是单例。

您正确地问“

Student
类的单个实例如何保存 100 个不同学生的数据?”

不,不能。 Singleton bean 适用于只应存在一次的对象,例如某种应用程序全局数据或只能存在一次的无状态服务。

并非所有东西都是单例。 Spring还有其他范围。除此之外,许多对象的生命周期不是由 Spring 管理的。好的旧构造函数仍在使用,特别是对于单个数据对象。

Spring 单例 bean 是一个像任何其他对象一样的对象。唯一的区别是它的生命周期是由框架管理的。你如何设计它以及如何处理它的字段完全取决于你。常见的做法是,它被设计为无状态服务或“全局常量”的“不可变对象”。然而,有时您可能有充分的理由使其可变,但这并不简单,您必须非常小心才能使其真正线程安全。如果你不知道就不要这样做:) 可变单例的一个很好的例子是应用程序范围的缓存,它通常被实现为某种

同步或并发集合

© www.soinside.com 2019 - 2024. All rights reserved.