spring的作用域
一、概述
spring有五种作用域分别书singleton、prototype、request、session、application
二、详解
singleton 就是单例类型。创建容器时自动创建一个bean的对象,不管是否使用,都存在了,每次获取到的对象都是同一个对象
prototype就是一个bean定义对应多个对象实例。prototype是原型类型,在创建容器时并没有实例化,当获取bean的时候才回去创建对象。每次获取到的对象都不是同一个对象。有状态的bean使用prototype,无状态的使用singleton。有状态就是说这个bean实例是保存用户的信息的,一旦用户灭忙,bean生命周期也就结束。无状态是没有特定的用户。即使使用它的用户消亡,依然存在会话池中,依然可以被其他用户调用。
request、session、application都是在web环境下使用的,我们一般搭配springMVC使用。因为springmvc的前端控制器包含了相关的状态。
如果没有使用springmvc需要在xml文件里配置一下listener和filter
request就是请求作用域:就是说每次用到这个bean来处理HTTP请求的时候会创建一个bean实例。请求完成后销毁这个bean
session是会话作用域:session是服务器和浏览器的一次会话过程,是连续的不是一次请求。session结束后销毁,session中所有http请求共享同一个请求的bean实例
application全局作用域:是说bean是ServletContext级别的就是说是整个web项目全局共享的。与单例有点像,但是单例是作用在applicationcontext也就是一个容器当中的,一个项目不仅仅只有一个applicationContext。
Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean。