我们需要了解下spring bean的作用域
在所有的spring bean默认都是单例的,当容器分配一个bean时,它总是返回bean的同一个实例(这点大家可以去试下)。但是有时候我们需要每次请求时候都获得唯一的Bean实例。
当在Spring中配置<bean>元素时,我们可以为Bean声明一个作用域,如下:
<bean id="roles" class="cn.com.ztz.spring.model.Roles" scope="prototype">
</bean>
这样每次返回都是不同的实例了。
spring bean的作用域有如下几种:
作用域 | 描述 |
singleton | 在每个spring容器中,一个bean定义只有一个对象实例(默认) |
prototype | bean的定义,每次调用都会创建一个新的实例 |
request | 在一次http请求中,每个Bean定义对应一个实例,该作用域仅在基于web的Spring上下文中才有效(如spring mvc) |
session | 在一个http session,每个Bean定义对应一个实例,该作用域仅在基于web的Spring上下文中才有效 |
global-session | 在一个全局http session,每个Bean定义对应一个实例,该作用域仅在基于web的Spring上下文中才有效 |