在面向对象程序设计中一般指对象或变量之间的可见范围,而在spring容器中是指其创建的bean对象相对于其他的bean对象的请求可见范围。spring提供singleton和prototype两种基本作用域,另外提供request,session,global session三种web
作用域;还允许自定义作用域。
1、基本的作用域
singleton:指singleton作用域的bean只会在每个spring IoC容器中存在一个实例,而且其生命周期完全由spring容器管理。对于所有获取该bean的操作spring容器将只返回同一个bean。
prototype:指每次向spring容器请求获取bean都会返回一个全新的bean,相对于singleton来说就是不缓存bean,每次都是根据bean的定义创建一个全新的bean。
2、web中的作用域
在web应用中,我们可能需要将数据存储到request,session,global session中,因此spring提供了三种web作用域:request,session,global session。
request:表示每个请求需要容器创建一个新的bean。比如提交表单的数据必须是对每次请求新建一个bean来保持这些表单数据,请求结束释放这些数据。
session:表示每个会话需要容器创建一个新的bean。比如对于每个用户一般会有一个会话,该用户的信息需要存储到会话中,此时可以将该bean配置为session作用域。
global session:类似于session作用域,只是其用于portlet环境的web应用。