当前位置: 首页 > wzjs >正文

专业网站建设出售前程无忧官网

专业网站建设出售,前程无忧官网,企业网站建设工作总结,电商网站方案建设一、Spring的三级缓存 关键就是提前暴露未完全创建完毕的Bean。 三级缓存来解决循环依赖: 一级缓存:用于存储完全初始化完成的单例Bean。 二级缓存:用于存储尚未完全初始化,但已实例化的Bean,用于提前暴露对象&#x…

一、Spring的三级缓存

关键就是提前暴露未完全创建完毕的Bean。
三级缓存来解决循环依赖:
一级缓存:用于存储完全初始化完成的单例Bean。
二级缓存:用于存储尚未完全初始化,但已实例化的Bean,用于提前暴露对象,避免循环依赖问题。
三级缓存:用于存储对象工厂,当需要时,可以通过工厂创建早期Bean(特别是为了支持AOP代理对象的创建)

二、Spring解决循环依赖流程

解决步骤:
1、Spring首先创建Bean实例,并将其加入三级缓存中(Factory);
2、当一个Bean依赖另一个未初始化的Bean时,Spring会从三级缓存中获取Bean的工厂,并生成Bean的代理对象;
3、代理对象存储二级缓存,解决循环依赖;
4、一旦所有依赖Bean被完全初始化,Bean将转移到一级缓存中。

三、Spring解决循环依赖流程(案例版)

带入案例,解决Spring的三级缓存解决循环依赖问题:
假设:A、B之间是两个循环依赖
1、一开始创造A的时候查询一级缓存(里面存成品),发现没找到则看二级缓存是否在创建中(有没有半成品)。都没有则需要创建A的bean,调用的是createBean。过程分别是实例化、属性注入、初始化。
2、A实例化之后往三级缓存加入一个A的getObject方法,这个就是解决循环依赖的关键。
3、到了属性注入,因为A依赖B因此需要创建B。同样的路线B也要createBean。不一样的也是解决循环依赖的一环:到了属性注入,查询二级缓存的A为创建中,则调用三级缓存的工厂getObject创建一个半成品的A,放入到二级缓存中,并完成B的第二步属性注入。
4、后面初始化initializeBean,完成B的Bean创建,放到一级缓存。
5、回到A刚刚卡在的属性注入,现在可以成功注入B,然后初始化,A也就完成了Bean创建。
(注:成品和半成品就是没有注入所需的依赖)

http://www.dtcms.com/wzjs/568445.html

相关文章:

  • 怎样做的英文网站西安网站外包
  • 兰州市住房建设局网站电商网站业务流程
  • 婚礼顾问网站介绍模版大兴网站开发网站建设哪家好
  • swiper做的全屏网站wordpress如何卸载插件
  • 在线捕鱼网站建设云南省工程建设交易系统网站
  • 2008 iis asp配置网站装修全包
  • 做网站建设有前途那wordpress轮播插件
  • 网站开发用什么书mvc架构购物网站开发
  • wap手机网站分享代码网站建设的发展趋势
  • 广州腾虎网络网站建设熊掌号张家口网站开发
  • wordpress 商品导航菜单龙岗网站优化
  • 河南天元建设公司网站网站开发需要那些技术人员
  • 网站建设调查回访表wordpress添加新的小工具
  • 网页和网站的关系深圳 网站设计师 招聘
  • 成都地区网站开发成本广安哪里做网站
  • 成交型网站建设方案一键logo设计生成器
  • 山东网站定制设计公司网站开发图片
  • 如何做百万格子网站网络营销专业就业公司
  • 合肥市建设工程市场价格信息网站用python做的电商网站
  • 文化集团网站模板可画设计软件下载
  • 虚拟体验网站网站正在建设中色综合
  • 云南省建设监理协会网站网站如何备份
  • 深圳市建设局网站首页工信部网站手机备案查询
  • 河北省建设环境备案网站网站建设要考虑哪些方面
  • 垡头街道网站建设兰州市住房建设局网站
  • 网站的标签修改龙江做网站
  • 1997年做网站是什么语言cc域名做门户网站
  • 网站建设的目的与意义是什么超市小程序怎么做
  • 上海网站开发公司哪家好中山推广网站
  • 网页设计网站长沙怎么在ps里做网站设计