spring-beans 深入源码之Bean Scopes

在定义一个bean得时候,可以选择声明一下bean的scope,例如每次都需要spring生成新的bean实例 你需要把scope声明称prototype。如果每次都需要获得同一个实例则声明成singleton即可。
Scope Description
Singleton 这个scope在spring中是默认的scope 意思在每个Ioc container中只有该bean的单一实例(单例模式)
prototype 这个scope恰恰和singleton相反 单一的bean拥有很多个实例
request 这个scope依赖于http 的request,每个请求会生成一个bean 实例 所以只能在web应用的context才能生效
session 这个scope依赖于http 的session,每个session会创建一个bean实例 所以也是只能在web应用的context才能生效
global-session 这个是全局的http session同样只有web应用才生效
在test.xml中配置的scope

Paste_Image.png

是prototype的scope 其他的scope和这个配置一样

除了以上几种scope 还可以自定义scope
下面介绍一下 test中的自定义scope测试类SimpleScopeTests
其中涉及到NoOpScope这个类 实现了 Scope接口
Scope接口在org.springframework.beans.factory.config中
Strategy interface used by a {@link ConfigurableBeanFactory},representing a target scope to hold bean instances in
策略模式得接口,是拥有bean实例存在的target。
NoOpScope 实现Scope后 空实现所有方法

Paste_Image.png

只是重写了get方法

Paste_Image.png

这个类是生成了两个TestBean实例 供按顺序调用 所以第一个和第二个不同 第三个和第一个却是相同的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容