Spring学习笔记之Bean的作用域
2016-12-15 13:58
309 查看
Bean 的作用域
在 spring 中, 可以在 <bean>元素的 scope 属性里设置 Bean 的作用域.
其中比较常用的是singleton和prototype两种作用域。对于singleton作用域的Bean,每次请求该Bean都将获得相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为;如果一个Bean被设置成prototype作用域,程序每次请求该id的Bean,Spring都会新建一个Bean实例,然后返回给程序。在这种情况下,Spring容器仅仅使用new
关键字创建Bean实例,一旦创建成功,容器不在跟踪实例,也不会维护Bean实例的状态。
如果不指定Bean的作用域,Spring默认使用singleton作用域。Java在创建Java实例时,需要进行内存申请;销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加。因此,prototype作用域Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean被设置成prototype作用域。
注意:request、session作用域的Bean只对Web应用才真正有效。实际上通常只会将Web应用的控制器Bean才指定成request作用域
session作用域与request作用域完全类似,区别在于:request作用域的Bean对于每次HTTP请求有效,而session作用域的Bean对于每次Session有效。在Web应用中,为了让request和session作用域生效,必须将HTTP请求对象绑定到为该请求提供服务的线程上,这使得具有request和session作用域的Bean实例能够在后面的调用链中被访问到。
<!-- 使用 bean 的 scope 属性配置 bean 的作用域 singleton:默认值,单例的,IOC 容器初始时创建 bean 实例,在整个容器的生命周期内只创建这一个 bean。 prototype:原型的,IOC 容器初始时不创建 bean 实例,而在每次调用getBean()都创建一个新的 bean 实例,并返回。 --> <bean id="car" class="com.atguigu.spring.scope.Car" p:brand="Audi" p:price="300000" scope="prototype"></bean>
相关文章推荐
- ITCAST视频-Spring学习笔记(配置Spring管理的bean的作用域)
- Spring3学习笔记之(spring core 之DI(Bean作用域))
- spring2.5.6学习笔记六:配置Spring管理的bean的作用域
- JavaWeb学习笔记之Spring中bean的作用域
- Spring学习笔记之Bean的作用域
- spring in action 学习笔记(四)bean的作用域
- spring学习笔记(6)——bean的作用域
- 【Spring学习笔记五】-Bean的作用域
- 7.Spring学习笔记_Bean的作用域(by尚硅谷_佟刚)
- 【Spring学习笔记】之【3.4 bean的作用域】
- spring学习笔记整理--04(配置Spring管理的bean的作用域、生命周期)
- Spring 学习笔记 7. 尚硅谷_佟刚_Spring_Bean 的作用域
- Spring 学习笔记(五)—— Bean之间的关系、作用域、自动装配
- Java框架spring 学习笔记(二):Bean的作用域
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
- Spring学习笔记(六) Bean的作用域 & Spel 表达式
- Spring视频学习笔记(3)Bean的作用域及自动装配
- 传智播客spring学习,实例化bean的方式及Bean的作用域
- spring学习笔记:bean的配置
- spring2.5.6学习笔记七:Spring管理的Bean的生命周期