Spring源码学习之bean的prototype和singleton类型
2017-02-17 22:40
375 查看
今天学习spring源码的时候看到prototype和singleton,以前知道两者的区别,现在有点模糊了,所以就大概停下来回忆理解了一。
Spring创建bean有prototype(原始模型)和singleton(单列模型)两种类型。
在默认的情况下,Spring中创建的bean都是单例模式的。一般情况下,有状态的bean需要使用prototype模式,而对于无状态的bean一般采用singleton模式(一般的dao都是无状态的)。
Singleton: Spring IoC容器中只会存在一个共享的bean实例,并且所有对该bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singlton作用域时,Spring
IoC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例。
Prototype: 每次对bean的请求都会创建一个新的bean实例(将其注入到另一个bean中,或者以程序的方式调用容器的
在s2sh 项目中,struts2的action交由spring管理的时候,spring默认是singleton的,而struts2的action显然是有状态的,所以必须显示设置为scope="prototype",prototype为原型模式,每次action请求过来都会创建一个action。但是对那些Dao的实现类建议使用单列模式,scope="singleton"
,因为这些类没有状态,用singleton只需维护一个实例,性能高要一些。。
Spring创建bean有prototype(原始模型)和singleton(单列模型)两种类型。
在默认的情况下,Spring中创建的bean都是单例模式的。一般情况下,有状态的bean需要使用prototype模式,而对于无状态的bean一般采用singleton模式(一般的dao都是无状态的)。
Singleton: Spring IoC容器中只会存在一个共享的bean实例,并且所有对该bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把一个bean定义设置为singlton作用域时,Spring
IoC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例。
Prototype: 每次对bean的请求都会创建一个新的bean实例(将其注入到另一个bean中,或者以程序的方式调用容器的
getBean()方法--只有getbean才会在容器中生成一个bean)
在s2sh 项目中,struts2的action交由spring管理的时候,spring默认是singleton的,而struts2的action显然是有状态的,所以必须显示设置为scope="prototype",prototype为原型模式,每次action请求过来都会创建一个action。但是对那些Dao的实现类建议使用单列模式,scope="singleton"
,因为这些类没有状态,用singleton只需维护一个实例,性能高要一些。。
相关文章推荐
- Spring学习笔记 关于Spring创建Bean的模式-Singleton(单例模式)和Prototype
- Spring源码学习(1) Singleton 和 prototype
- [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件
- Spring学习笔记 关于Spring创建Bean的模式-Singleton(单例模式)和Prototype
- Spring源码学习笔记之一:从BeanPostProcesser开始
- spring源码探究---beanFactory为bean对象设置属性时涉及到的类型转换
- spring3 bean容器相关源码学习----ApplicationContext接口
- spring开发_spring中Bean的作用域_singleton_prototype
- Spring源码学习-5.ProxyFactoryBean实现与源代码分析
- spring创建bean模式singleton与prototype的区别
- Spring源码学习IOC(4):IoC容器解析Bean定义资源并注册解析后的Bean
- spring开发_spring中Bean的作用域_singleton_prototype
- (精)Spring IOC核心源码学习III:bean标签和自定义标签实现原理
- spring源码初步学习-容器(BeanFactory)基本实现
- spring源码学习(1)-bean包中主要接口部分的简单介绍
- Spring源码学习IOC(3):IoC容器载入Bean定义资源文件
- Spring源码学习之--事务类型
- 关于Spring创建Bean的模式-Singleton(单例模式)和Prototype
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- spring源码初步学习-bean的加载