首页 > 解决方案 > 如果没有,spring 是否总是为每个新客户端创建一个新的 IOC 容器,那么它如何管理单例 bean?

问题描述

如果没有,spring 是否总是为每个新客户端创建一个新的 IOC 容器,那么它如何管理单例 bean?我真的很困惑,一个单例 bean 如何管理来自不同用户的请求?

标签: javaspring

解决方案


不会。它不会为每个新客户端创建新的 IOC 容器。这就是 bean 作用域存在的原因。如果您想保留每个请求的 bean,您可以使用 request 作为 bean 范围。单例不是线程安全的。所以每一个新的请求,它都会共享实例属性。

从文档中请求范围定义

将单个 bean 定义限定为单个 HTTP 请求的生命周期;也就是说,每个 HTTP 请求都将有自己的 bean 实例,该实例是在单个 bean 定义的后面创建的。仅在 Web 感知 Spring ApplicationContext 的上下文中有效。


推荐阅读