【303、Bean 的作用域有哪些?常用的是哪些?】

94 阅读1分钟

在 Spring 框架中,Bean 的作用域可以分为以下 5 种:

  1. singleton:单例模式,一个 Bean 在整个应用中只有一个实例。
  2. prototype:原型模式,每次请求都会创建一个新的实例。
  3. request:每个 HTTP 请求都会创建一个新的实例,该实例仅在当前请求内部有效。
  4. session:每个 HTTP 会话都会创建一个新的实例,该实例仅在当前会话内部有效。
  5. global-session:全局会话作用域,仅在使用基于 Portlet 的 web 应用时才有意义,表示全局会话,一个全局会话可以包含多个普通会话。

我通常使用的作用域是 singleton 和 prototype。singleton 适用于那些只需要一个实例的 Bean,例如 DAO、Service 等组件,能够减少对象的创建和销毁开销,提高应用性能;而 prototype 适用于那些每次调用都需要新的实例的 Bean,例如 Action、Controller 等组件。对于需要在 Web 应用中使用的 Bean,也可以考虑使用 request 或 session 作用域。需要根据具体的场景来选择合适的作用域。