Spring @Scope 注解详解:Bean 作用域与使用示例

@Scope 注解用于指定一个 Bean 的作用域,即在什么范围内该 Bean 是有效的。Spring 提供了以下几种作用域:

  1. singleton: 默认值,表示一个 Bean 在整个应用中只有一个实例。
  2. prototype: 每次请求时都会创建一个新的实例。
  3. request: 每个 HTTP 请求都会创建一个新的实例,该实例仅在当前 HTTP 请求中有效。
  4. session: 每个 HTTP 会话都会创建一个新的实例,该实例在整个会话期间有效。
  5. global session: 仅在基于 Portlet 的 Web 应用中有效,表示每个 Portlet 应用中的所有 HTTP 会话共享一个实例。

使用示例

@Component
@Scope('prototype')
public class MyPrototypeBean {
    // ...
}
@Component
@Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MySessionBean {
    // ...
}

在上面的例子中,MyPrototypeBean 的作用域被设置为 prototype,因此每次请求该 Bean 时都会创建一个新的实例。而 MySessionBean 的作用域被设置为 session,表示该 Bean 在整个 HTTP 会话期间有效。同时,为了防止在 session 作用域中使用非线程安全的成员变量,还可以使用 proxyMode = ScopedProxyMode.TARGET_CLASS 来创建一个代理类。


原文地址: https://www.cveoy.top/t/topic/oYW0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录