Bean的作用域概述
创建bean定义时,同时也会定义该如何创建Bean实例。 这些具体创建的过程是很重要的,因为只有通过对这些配置过程,您才能创建实例对象。
您不仅可以将不同的依赖注入到bean中,还可以配置bean的作用域。这种方法是非常强大而且也非常灵活,开发者可以通过配置来指定对象的作用域,无需在Java类的层次上配置。 bean可以配置多种作用域,Spring框架支持五种作用域,有三种作用域是当开发者使用基于Web的ApplicationContext的时候才有效的。您还可以创建自定义范围.。
下表描述了支持的范围:
作用域 | 描述 |
singleton | (默认) 每一Spring IOC容器都拥有唯一的实例对象。 |
prototype | 一个Bean定义可以创建任意多个实例对象. |
request | 将单个bean定义范围限定为单个HTTP请求的生命周期。 也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义的后面创建的。 只有基于Web的Spring ApplicationContext 的才可用。 |
session | 将单个bean定义范围限定为HTTP Session 的生命周期。 只有基于Web的Spring ApplicationContext 的才可用。 |
application | 将单个bean定义范围限定为ServletContext的生命周期。 只有基于Web的Spring ApplicationContext 的才可用。 |
websocket | 将单个bean定义范围限定为WebSocket的生命周期。 只有基于Web的Spring ApplicationContext的才可用。 |
从Spring 3.0开始,线程作用域默认是可用的,但默认情况下未注册。