Bean 的作用域
类型 | 说明 |
---|---|
singleton((默认值) | 在 Spring IoC 容器中仅存在一个 Bean 实例,Bean 以单实例的方式存在。 |
prototype | 每次从容器中调用 Bean 时,都返回一个新的实例。即每次调用 getBean() 时,相当于执行 new XXXBean() 操作。 |
request | 每次 HTTP 请求都会创建一个新的 Bean,该作用域仅适用于 WebApplicationContext 中。 |
session | 同一个 HTTP Session 共享一个 Bean ,不同的 HTTP Session 使用不同的 Bean , 该作用域仅适用于 WebApplicationContext 中。 |
globalSession | 同一个全局 Session 共享一个 Bean , 一般用于 Portlet 应用环境, 该作用域仅适用于 WebApplicationContext 中。 |
在 Spring 中 ,可以通过 @Scope 注解来指定 Bean 的作用域。
除了以上五种预定义的 Bean 作用域外, Spring 还允许用户自定义 Bean 作用域。可以先通过 org.springframework.beans.factory.config.Scope 接口定义新的作用域,再通过
org.springframework.beans.factory.config.CustomScopeConfigurer 这个 BeanFactoryPostProcessor 注册自定义的 Bean 作用域。