开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天
Spring中Bean的作用域
Bean支持的五种作用域描述
| 作用域名称 | 描述 |
|---|---|
| singleton | 单例模式,在该模式下容器中只会存在一个共享的Bean实例,所有对Bean的请求,只要请求的id(name)与Bean的定义相匹配,会返回Bean的同一个实例。 |
| prototype | 原型模式,每次从容器中请求Bean时,都会产生一个新的实例 |
| request | 每一个HTTP请求都会有自己的Bean实例,该作用域只能在基于Web的Spring ApplicationContext中作用 |
| session | 每一个HTTPsession请求都会有自己的Bean实例,该作用域只能在基于Web的Spring ApplicationContext中作用 |
| global session | 限定一个Bean的作用域为Web应用(HTTPsession)的生命周期,只有在Web应用中使用Spring时,该作用域才有效 |
这里我们详细介绍前两种
singleton的作用域介绍
singleton是Spring容器默认的作用域,当Bean的作用域为singleton时,Spring容器就只会存在一个共享的Bean实例,该实例可重复使用,Spring容器管理着Bean的生命周期,包括Bean的创建、初始化、销毁。因为创建和销毁Bean实例会带来一定的系统开销,所以singleton作用域可避免反复创建和销毁实例造成的资源消耗。
在Spring配置文件中,可以使用元素的scope属性,将Bean的作用域定义成为singleton:
<bean id="scope" class="com.hexiaoxing.scope.Scope" scope="singleton"/>
prototype的作用域介绍
当Bean的作用域为 prototype,每次对Bean请求时都会创建一个新的Bean实例,Spring容器只负责创建Bean实例而不再管理其生命周期
在Spring配置文件中,可以使用<bean>元素的scope属性,将Bean的作用域定义成为singleton:
<bean id="scope" class="com.hexiaoxing.scope.Scope" scope="prototype"/>