推荐答案
在 Spring 框架中,Java Bean 的作用域主要有以下几种:
- Singleton:默认作用域,每个 Spring IoC 容器中只有一个 Bean 实例。
- Prototype:每次请求时都会创建一个新的 Bean 实例。
- Request:每个 HTTP 请求都会创建一个新的 Bean 实例,仅适用于 Web 应用。
- Session:每个 HTTP Session 都会创建一个新的 Bean 实例,仅适用于 Web 应用。
- Application:每个 ServletContext 生命周期内创建一个 Bean 实例,仅适用于 Web 应用。
- WebSocket:每个 WebSocket 会话内创建一个 Bean 实例,仅适用于 Web 应用。
本题详细解读
Singleton 作用域
- 定义:Singleton 是 Spring 默认的作用域。在这种作用域下,Spring IoC 容器中只会存在一个 Bean 实例。
- 适用场景:适用于无状态的 Bean,或者需要共享状态的 Bean。
- 配置方式:可以通过
@Scope("singleton")或 XML 配置<bean scope="singleton">来指定。
Prototype 作用域
- 定义:Prototype 作用域表示每次请求时都会创建一个新的 Bean 实例。
- 适用场景:适用于有状态的 Bean,或者每次请求都需要一个新的实例。
- 配置方式:可以通过
@Scope("prototype")或 XML 配置<bean scope="prototype">来指定。
Request 作用域
- 定义:Request 作用域表示每个 HTTP 请求都会创建一个新的 Bean 实例。
- 适用场景:适用于 Web 应用中的请求处理,如用户请求相关的数据。
- 配置方式:可以通过
@Scope("request")或 XML 配置<bean scope="request">来指定。
Session 作用域
- 定义:Session 作用域表示每个 HTTP Session 都会创建一个新的 Bean 实例。
- 适用场景:适用于 Web 应用中的用户会话管理,如用户登录信息。
- 配置方式:可以通过
@Scope("session")或 XML 配置<bean scope="session">来指定。
Application 作用域
- 定义:Application 作用域表示每个 ServletContext 生命周期内创建一个 Bean 实例。
- 适用场景:适用于 Web 应用中的全局数据管理,如应用配置。
- 配置方式:可以通过
@Scope("application")或 XML 配置<bean scope="application">来指定。
WebSocket 作用域
- 定义:WebSocket 作用域表示每个 WebSocket 会话内创建一个 Bean 实例。
- 适用场景:适用于 WebSocket 应用中的会话管理。
- 配置方式:可以通过
@Scope("websocket")或 XML 配置<bean scope="websocket">来指定。
通过理解这些作用域,开发者可以根据应用需求选择合适的 Bean 作用域,从而更好地管理 Bean 的生命周期和状态。