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

2008服务器网站考证培训机构

2008服务器网站,考证培训机构,网站建设一个购买链接,wordpress 主题css放在哪假设在spring中bean A依赖bean B,bean B依赖bean A,这种循环依赖的情况通常会使用三级缓存的方式进行处理。 什么是三级缓存 一级缓存:存储的是已经实例化完成的bean实例。 二级缓存:存放在这里的是提前暴露的bean半成品。若Bea…

假设在spring中bean A依赖bean B,bean B依赖bean A,这种循环依赖的情况通常会使用三级缓存的方式进行处理。

什么是三级缓存

一级缓存:存储的是已经实例化完成的bean实例。
二级缓存:存放在这里的是提前暴露的bean半成品。若Bean需AOP代理(如@Async、@Transactional),三级缓存的ObjectFactory会提前生成代理对象并存入二级缓存,避免重复创建代理。
三级缓存:存放的是bean的ObjectFactory对象,通过ObjectFactory.getObject()可以获取具体的bean实例。

如何进行循环依赖处理

spring会按以下步骤进行处理:

  1. spring调用构造化方法实例化bean A,同时把A的ObjectFactory存入三级缓存。
  2. 发现A依赖bean B后,会先在一级缓存查询是否已经有bean B的实例,如果没有会在二级缓存查询,如还是没有会在三级缓存查询B的ObjectFactory。如三级缓存都没有,则bean A会暂停注入属性,先去实例化bean B。
  3. B实例化后,同样会把ObjectFactory存入三级缓存。
  4. B在注入属性时发现依赖bean A,此时B同样会从一级缓存到三级缓存依次查询。查询到实例后进行属性注入。
  5. bean B属性注入完成后,bean A恢复注入流程,从三级缓存中查询对应的ObjectFactory。
    循环依赖处理过程如下图所示:
Container A B Cache ObjectFactory 1. 实例化A 2. 注册A的ObjectFactory到三级缓存 3. 开始注入属性(发现需要B) 4. 实例化B 5. 注册B的ObjectFactory到三级缓存 6. 开始注入属性(发现需要A) 7. 请求A的引用 8. 调用getObject() 9. 执行getEarlyBeanReference() 10. 返回原始对象或代理 11. 返回A的早期引用 12. 完成B的初始化 13. 完成A的初始化 Container A B Cache ObjectFactory
http://www.mnyf.cn/news/37517.html

相关文章:

  • 虎丘做网站价格热搜在哪里可以看
  • wordpress小说网站主题浙江网络科技有限公司
  • 网站推广托管官网seo
  • 百度地图开发网站网络推广方法怎么样
  • 宠物网站建设报告店面怎么做位置定位
  • 营销型网站模板百度搜索开放平台
  • 怎么做视频平台网站吗外链代发2分一条
  • 汽车网站建设需要多少钱石家庄关键词优化平台
  • 电影网站html源码百度网盘搜索
  • 什么网站做美食最好最专业电商线上推广渠道
  • 建e网是什么软件郑州网站运营实力乐云seo
  • wordpress最新版怎么变成英文seo营销培训咨询
  • 抖音短视频推广网站seo排名优化方法
  • 龙岗外贸网站建设公司价格东莞网站建设推广哪家好
  • 黄江网站建设网站关键词seo优化公司
  • 做网站去哪里找网页模板
  • 福州官网建站厂一站传媒seo优化
  • 做网站 用 显示器做神马seo快速排名软件
  • 模板网站建设哪家专业网店交易平台
  • wordpress 美丽说搜索引擎优化seo名词解释
  • 网站的建设与管理注册域名
  • 财务公司网站开发源码google seo
  • 网页设计图片外链深圳排名seo
  • 官方网站面膜做微商佛山网站建设正规公司
  • 做公司网站的时间交换友情链接的平台有哪些
  • 网站建设 开发人一丶一一人一一链接网
  • 给艺术家做网站的工作seo优化网站查询
  • 怎么做下载网站吗网络推广app是违法的吗
  • 自适应网站建设服务哪家好直接进网站的浏览器
  • 做网站需要了解什么东西百度指数怎么看