Java 面试题
目录

Spring 框架中 Java Bean 的作用域有哪些?

· 约 3 分钟读完 · 第 186 / 274 章

推荐答案

在 Spring 框架中,Java Bean 的作用域主要有以下几种:

  1. Singleton:默认作用域,每个 Spring IoC 容器中只有一个 Bean 实例。
  2. Prototype:每次请求时都会创建一个新的 Bean 实例。
  3. Request:每个 HTTP 请求都会创建一个新的 Bean 实例,仅适用于 Web 应用。
  4. Session:每个 HTTP Session 都会创建一个新的 Bean 实例,仅适用于 Web 应用。
  5. Application:每个 ServletContext 生命周期内创建一个 Bean 实例,仅适用于 Web 应用。
  6. 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 的生命周期和状态。