【发布时间】:2020-07-31 14:44:52
【问题描述】:
我的理解是,原型范围的 Java bean 类在每次被请求时都会被实例化,而单例范围的 Java bean 会在应用程序启动时被实例化一次。
我的问题是:使用原型作用域会导致多少开销?
- Spring 框架是否尝试回收原型范围的对象以减少重复实例化带来的开销?
- 原型作用域引起的开销是否足以保证我尽可能多地使我的 Java bean 类无状态,以便我可以对它们应用单例作用域?
【问题讨论】:
-
我无法回答您的问题,但我从不使用 Prototype 范围,因为我所有的 bean 都是无状态的。在您的案例中使用 Prototype 范围的原因是什么?
-
与每次创建新对象的开销相同,
-
为什么是原型范围?为什么要自己承担清理 bean 的开销?
-
@SimonMartinelli 我的 bean 是有状态的(它们包含实例变量),它们可能同时服务于多个请求。我担心如果我的 bean 没有被限定为原型,就会出现线程安全问题。
标签: java spring spring-boot spring-mvc