- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
?
?
【Spring源码分析】34-Spring Bean作用域的设计与实现
?
?
1、Spring Bean作用域简介
bean定义的配方是很重要的,因为这意味着,对于一个类,你可以使用一个配方创建许多对象实例。你不仅可以通过特定的bean定义控制各种依赖关系和配置值创建一个对象,还控制创建的对象的作用域。这种方法是强大和灵活的,因为你可以选择您创建的对象的作用域通过配置,而不是靠对象在Java类级别的作用域。可以定义bean被部署在一个作用域。Spring框架支持六个作用域,其中四个作用域需要使用带有Web功能的ApplicationContext(AbstractRefreshableWebApplicationContext)。您还可以创建一个自定义作用域。下表描述了支持的作用域:
Bean作用域
作用域
描述
singleton
(默认作用域) 一个bean定义对应一个在Spring IoC容器中存在的对象实例。
prototype
一个bean定义可以创建任意数量的对象实例。
request
一个bean定义代表一个单独的HTTP请求的生命周期。也就是说,每个HTTP请求都有自己的bean的实例。只有在web应用的Spring?ApplicationContext中生效。
session
一个bean定义代表对应bean的作用域与Http Session的生命周期相同。只有在web应用的Spring?ApplicationContext中生效。
application
一个bean定义代表对应bean的作用域与ServletContext的生命周期相同。?只有在web应用的Spring?ApplicationContext中生效。
websocket
一个bean定义代表对应bean的作用域与WebSocket的生命周期相同。只有在web应用的Spring?ApplicationContext中生效。
1.1、Singleton作用域
只有一个共享一个单例bean管理的实例,以及所有bean的请求ID或bean定义ID相匹配的结果在一个特定的Spring容器返回的bean实例。换句话说,当你定义一个作用域为singleton的bean的BeanDefinition,Spring的IoC容器创建一个BeanDefinition定义的实例对象的。这单一实例会被当做单例缓存起来,以后所有后续请求和引用bean返回缓存的对象。
1.2、Prototype作用域
导致每次请求特定bean都会创建一个新的bean实例。即在一个bean注入另一个bean或者请求通过在容器调用getBean()方法的时候。
与其他作用域相比,Spring不管理prototype作用域bean的完整生命周期。容器实例化,配置和组装原型对象并将其交给客户端,而没有该原型实例的进一步记录。因此,尽管无论是什么作用域都会在所有对象上调用初始化生命周期回调方法,但在prototype作用域的情况下,不会调用已配置的销毁生命周期回调。客户端代码必须清理prototype作用域的对象并释放prototype bean所拥有的昂贵资源。要使Spring容器释放prototype的bean所拥有的资源,请尝试使用自定义bean后处理器,它包含对需要清理的bean的引用。
1.3、Request, Session, Application和WebSocket作用域
仅当您使用Spring WebApplicationContext实现(例如XmlWebApplicationContext)时,Request,Session,Application和WebSocket作用域才可用。如果将这些作用域与常规的Spring IoC容器(例如ClassPathXmlApplicationContext)一起使用,则会引发未知bean 作用域的IllegalStateException。
1.3.1、初始Web配置
要在请求,会话,应用程序和websocket级别(Web作用域的bean)支持bean的作用域,在定义bean之前需要一些小的初始配置。 (标准作用域不需要此初始设置:单例和原型。)
如何完成此初始设置取决于您的特定Servlet环境。
如果您在Spring Web MVC中访问scoped bean,实际上是在Spring DispatcherServlet处理的请求中,则无需进行特殊设置。 DispatcherServlet已经公开了所有相关状态。
如果您使用Servlet 2.5 Web容器,并且在Spring的DispatcherServlet之外处理请求(例如,使用JSF或Struts时),则需要注册org.springframework.w
您可能关注的文档
- 《Redis设计与实现》阅读笔记2-数据结构与对象(整数集合,压缩列表).docx
- 《Redis设计与实现》阅读笔记3-数据结构与对象(对象).docx
- 《Redis设计与实现》阅读笔记4-数据库.docx
- 《Redis设计与实现》阅读笔记5-RDB持久化.docx
- 《Redis设计与实现》阅读笔记6-AOF持久化.docx
- 《Redis设计与实现》阅读笔记7-事件.docx
- 《Redis设计与实现》阅读笔记8-客户端.docx
- 《Redis设计与实现》阅读笔记9-服务器.docx
- 《Redis设计与实现》阅读:Redis底层研究之哈希表hashtable.docx
- 《Spring设计思想》AOP实现原理.docx
最近下载
- 2024年琼海市菜篮子市场开发有限责任公司招聘真题 .pdf VIP
- 2025海南琼海市菜篮子市场开发有限责任公司招聘10人(第1号)备考练习题库及答案解析.docx VIP
- 2025海南琼海市菜篮子市场开发有限责任公司招聘10人(第1号)笔试备考题库及答案解析.docx VIP
- 2025海南琼海市菜篮子市场开发有限责任公司招聘10人(第1号)笔试参考题库附答案解析.docx VIP
- GB∕T 39758-2021 无障碍设计 盲文在标志、设备和器具上的应用.pdf
- 2025海南琼海市菜篮子市场开发有限责任公司招聘10人(第1号)笔试模拟试题及答案解析.docx VIP
- 法哲学原理第二讲导论-公开课件.ppt VIP
- 法哲学原理课件.pptx
- 轻型卒中临床诊疗中国专家共识(2024版).pptx VIP
- 广告语言的语用分析.docx VIP
文档评论(0)