作用域的种类
Spring 4.3中为Bean的实例定义了7种作用域,这7种作用域及其说明如表1所示。
表1 Bean的作用域
作用域名称 | 说明 |
---|---|
singleton(单例) | 使用singleton定义的Bean在Spring容器中将只有一个实例,也就是说,无论有多少个Bean引用它,始终将指向同一个对象。这也是Spring容器默认的作用域。 |
prototype(原型) | 每次通过Spring容器获取的prototype定义的Bean时,容器都将创建一个新的Bean实例。 |
request | 在一次HTTP请求中,容器会返回该Bean的同一个实例。对不同的HTTP请求则会产生一个新的Bean,而且该Bean仅在当前HTTP Request内有效。 |
session | 在一次HTTP Session中,容器会返回该Bean的同一个实例。对不同的HTTP请求则会产生一个新的Bean,而且该Bean仅在当前HTTP Session内有效。 |
globalSession | 在一个全局的HTTP Session中,容器会返回该Bean的同一个实例。仅在使用portlet上下文时有效。 |
application | 为每个ServletContext对象创建一个实例。仅在Web相关的ApplicationContext中生效。 |
websocket | 为每个websocket对象创建一个实例。仅在Web相关的ApplicationContext中生效。 |
在表1的7种作用域中,singleton和prototype是最常用的两种,在接下来的两个小节中,将会对这两种作用域进行详细的讲解。