Spring框架里的IOC容器可以方便的管理应用里面的bean对象的实例,只需要按照Spring里提供的xml或注解的方式去告诉IOC容器哪些Bean需要被IOC容器管理就行。
既然是Bean对象的管理,那么意味着这些实例是存在生命周期的,也就是所谓的作用域。
理论上,常规的声明周期有俩种,
一种是Singleton(单例):这是Spring的默认作用范围。在单例模式下,Spring IoC容器中仅存在一个Bean实例。
另一种是Prototype(原型):每次从Spring IoC容器中请求Bean时,都会创建一个新的Bean实例。
但是在基于spring框架下的web应用里增加了一个会话维度来控制bean的生命周期的这样一个功能。主要有三个选项,分别为:
Request(请求):Bean的作用范围限定在一次HTTP请求的生命周期内。这意味着,每次HTTP请求都会创建一个新的Bean实例,
Session(会话):Bean的作用范围限定在一个用户会话的生命周期内。
Global Session(全局会话):Bean的作用范围限定在整个全局会话的生命周期内。