spring bean作用域

在Spring框架中,Bean的作用域定义了Bean实例的生命周期和可见范围。以下是Spring中常见的几种Bean作用域:

  1. Singleton(单例)
  • 这是默认的作用域。

  • 在整个Spring容器中,只存在一个Bean实例。

  • 适用于无状态的服务层和数据访问层。

  1. Prototype(原型)
  • 每次从容器中获取Bean时都会创建一个新的实例。

  • 适用于有状态的对象,如控制器和页面组件。

  1. Request(请求)
  • 在一次HTTP请求中,每个Bean都是一个新的实例。

  • 仅在Web应用程序中使用,确保每个请求之间的数据隔离。

  1. Session(会话)
  • 在一个HTTP会话中,每个Bean都是一个新的实例。

  • 同样只在Web应用程序中使用,用于跟踪用户状态。

  1. Global Session(全局会话)
  • 主要用于Portlet应用环境。

  • 类似于Session作用域,但适用于Portlet环境下的全局会话。

  1. Application(应用)
  • 在ServletContext生命周期内,Bean为单例。

  • 适用于需要在整个Web应用程序运行阶段共享的Bean。

  1. WebSocket(WebSocket)
  • 在WebSocket生命周期内,Bean为单例。

  • 适用于需要跟踪WebSocket连接状态的场景。

通过配置<bean>元素的scope属性,可以指定Bean的作用域。例如,要声明一个每次请求都产生新实例的Bean,可以将scope属性设置为prototype

需要注意的是,并非所有作用域都适用于所有类型的应用程序。例如,requestsession作用域通常用于Web应用程序,而globalSession主要用于Portlet环境。

Top