gpt4 book ai didi

spring - 为什么 Spring bean 是单例范围?

转载 作者:行者123 更新时间:2023-12-04 13:03:33 29 4
gpt4 key购买 nike

我正在与 Hibernet 和 Spring 合作,进展顺利..但我有一些疑问

1)为什么spring范围默认是单例的?有什么原因吗

2) 我可以在 Hibernate 实体中编写最终变量吗?
例子 :

@Entity
public class Emp {
@Id
private Long id;
final private String panNo;
}

我可以像上面那样写吗

3)静态变量可以Searlizable吗?

最佳答案

如果您仔细研究 Spring,您会发现 Spring 帮助您编写服务,而不是数据对象。使用 Spring,您仍然必须管理自己的域对象,可能是关系数据对象或直接 POJO,并将它们作为输入传递给 Spring 托管服务、存储库和 Controller 等。

因此,考虑到这一点,应该清楚为什么 Spring 的默认范围不是原型(prototype)、 session 或请求:我们不需要在每次请求进入时都创建新服务。但是为什么是单例呢?当服务是无状态的时,它是线程安全的,并且可以扩展到任意数量的并发请求,因此不需要同一服务的第二个副本。

与 EJB 不同,EJB 有有状态 bean 和无状态 bean,Spring 只有一种 bean:无状态。如果你想管理状态,你必须自己做。就像之前的答案已经指出的那样,无状态是迄今为止更好的选择,因为它更快、更可扩展且更易于维护,这也是 REST 架构所提倡的。有状态的 bean 在纸面上可能看起来很棒,但多年来已被证明是一场灾难。

关于spring - 为什么 Spring bean 是单例范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21828664/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com