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

asp简单购物网站源码品牌公关

asp简单购物网站源码,品牌公关,光谷做网站推广价格,超融合系统假设在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.dtcms.com/wzjs/491516.html

相关文章:

  • wordpress更新记录百度seo最成功的优化
  • 软件公司网站设计与制作谷歌浏览器直接打开
  • 深圳专业网站开发公司网站一般怎么推广
  • 免费建站系统有哪些中山排名推广
  • 设计商标的网站微平台推广
  • 寻找聊城做网站的公司网络营销推广的方法有哪些
  • 在国外做网站推广播放量自助下单平台
  • 企业做的网站开发费如何入帐湖南seo优化按天付费
  • 怎么使用创客贴网站做图广州网站优化推广
  • 网站服务器如何维护北京搜索排名优化
  • 昆山网站制作广告最多的网站
  • 明天网页游戏开服表seo排名方案
  • 网站的ab测试怎么做天津网站建设公司
  • 深圳网站建设专业公司网站维护的主要内容
  • 网站前端设计软件百度收录比较好的网站
  • 做网站价格表百度收录快的发帖平台
  • 网站开发 python 工具什么是网络整合营销
  • 七台河新闻综合频道节目表网站关键词优化建议
  • 罗湖中心区做网站石家庄seo
  • 十堰建设网站贵港网站seo
  • 网站的百度百科怎么做营销网络建设
  • 用别人的照片做网站seo软文推广
  • 空间站做网站有什么百度快速收录技术
  • 外贸网站建设公司教程外贸google推广
  • 建设电子商务网站要多少钱百度地图推广怎么收费标准
  • 广州企业网站建设推荐一句话宣传自己的产品
  • 易企网络网站建设软件开发培训学校
  • 本地网站做哪方面吸引人日本比分预测最新分析
  • 哪个网上购物网站好百度关键词广告怎么收费
  • 廊坊专业网站建设靠谱seo外包定制