Bean 的作用域一共有 5 个。
singleton
singleton 作用域:表示在 Spring 容器中只有一个 Bean 实例,以单例的形式存在,是默认的 Bean 作用域。
配置方式,缺省即可,XML 的配置方式如下:
<bean class="..."></bean>
prototype
原型作用域,每次调用 Bean 时都会创建一个新实例,也就是说每次调用 getBean() 方法时,相当于执行了 new Bean()。
XML 的配置方式如下:
<bean class="..." scope="prototype"></bean>
request
每次 Http 请求时都会创建一个新的 Bean,该作用域仅适应于 WebApplicationContext 环境。
XML 的配置方式如下:
<bean class="..." scope="request"></bean>
Java 注解的配置方式如下:
@Scope(WebApplicationContext.SCOPE_REQUEST)
或是:
@RequestScope(WebApplicationContext.SCOPE_REQUEST)
session
同一个 Http Session 共享一个 Bean 对象,不同的 Session 拥有不同的 Bean 对象,仅适用于 WebApplicationContext 环境。
XML 的配置方式如下:
<bean class="..." scope="session"></bean>
Java 注解的配置方式如下:
@Scope(WebApplicationContext.SCOPE_SESSION)
或是:
@RequestScope(WebApplicationContext.SCOPE_SESSION)
application
全局的 Web 作用域,类似于 Servlet 中的 Application。
XML 的配置方式如下:
<bean class="..." scope="application"></bean>
Java 注解的配置方式如下:
@Scope(WebApplicationContext.SCOPE_APPLICATION)
或是:
@RequestScope(WebApplicationContext.SCOPE_APPLICATION)
小结
工作中用的都是用的默认的单例Bean,还没有碰到要使用其他作用域到情况。下次有碰到再补充进来。