介绍:
scope是spring bean标签中的一个属性,为范围的意思,表示IOC在创建过程中bean实例对象个数和生命周期;
bean有四个类型:singleton;prototype;request;session;下面一一介绍:
singleton:当spring容器创建时,只存在一个bean的实例,所有引用bean都是引用这个单一实例,也就是单例模型,所有引用bean都是单一实例
效果:
prototype:
spring容器在生成prototype类型的bean时,每次都会生成一个新的对象给请求方;容器负责对该对象实例化以及属性设置,但最终只要实例化完毕,返回给请求方后,容器就补在拥有该对象引用,请求方负责对该对象后期生命周期的管理包括对象的销毁,也就是说,容器生成该对象后,请求方管理该对象的生命周期
request和session:
这两个属性不同于上面的属性,上面的用于Java project 这两个用于web project 通常是和XmlWebApplicationContext共同使用。
request:Spring容器,即XmlWebApplicationContext 会为每个HTTP请求创建一个全新的RequestPrecessor对象,当请求结束后,该对象的生命周期即告结束
session:spring容器会为每个独立的session创建属于自己的全新的UserPreferences实例,比request scope的bean会存活更长的时间,其他的方面没区别