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

龙华app网站制作公司网站建设报价

龙华app网站制作,公司网站建设报价,产品设计平台,免费数据分析网站假设在spring中bean A依赖bean B#xff0c;bean B依赖bean A#xff0c;这种循环依赖的情况通常会使用三级缓存的方式进行处理。 什么是三级缓存 一级缓存#xff1a;存储的是已经实例化完成的bean实例。 二级缓存#xff1a;存放在这里的是提前暴露的bean半成品。若Bea…假设在spring中bean A依赖bean Bbean B依赖bean A这种循环依赖的情况通常会使用三级缓存的方式进行处理。 什么是三级缓存 一级缓存存储的是已经实例化完成的bean实例。 二级缓存存放在这里的是提前暴露的bean半成品。若Bean需AOP代理如Async、Transactional三级缓存的ObjectFactory会提前生成代理对象并存入二级缓存避免重复创建代理。 三级缓存存放的是bean的ObjectFactory对象通过ObjectFactory.getObject()可以获取具体的bean实例。 如何进行循环依赖处理 spring会按以下步骤进行处理 spring调用构造化方法实例化bean A同时把A的ObjectFactory存入三级缓存。发现A依赖bean B后会先在一级缓存查询是否已经有bean B的实例如果没有会在二级缓存查询如还是没有会在三级缓存查询B的ObjectFactory。如三级缓存都没有则bean A会暂停注入属性先去实例化bean B。B实例化后同样会把ObjectFactory存入三级缓存。B在注入属性时发现依赖bean A此时B同样会从一级缓存到三级缓存依次查询。查询到实例后进行属性注入。bean B属性注入完成后bean A恢复注入流程从三级缓存中查询对应的ObjectFactory。 循环依赖处理过程如下图所示 #mermaid-svg-AdCXZrChVIlgseU1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-AdCXZrChVIlgseU1 .error-icon{fill:#552222;}#mermaid-svg-AdCXZrChVIlgseU1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-AdCXZrChVIlgseU1 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-AdCXZrChVIlgseU1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-AdCXZrChVIlgseU1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-AdCXZrChVIlgseU1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-AdCXZrChVIlgseU1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-AdCXZrChVIlgseU1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-AdCXZrChVIlgseU1 .marker.cross{stroke:#333333;}#mermaid-svg-AdCXZrChVIlgseU1 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-AdCXZrChVIlgseU1 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-AdCXZrChVIlgseU1 text.actortspan{fill:black;stroke:none;}#mermaid-svg-AdCXZrChVIlgseU1 .actor-line{stroke:grey;}#mermaid-svg-AdCXZrChVIlgseU1 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-AdCXZrChVIlgseU1 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-AdCXZrChVIlgseU1 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-AdCXZrChVIlgseU1 .sequenceNumber{fill:white;}#mermaid-svg-AdCXZrChVIlgseU1 #sequencenumber{fill:#333;}#mermaid-svg-AdCXZrChVIlgseU1 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-AdCXZrChVIlgseU1 .messageText{fill:#333;stroke:#333;}#mermaid-svg-AdCXZrChVIlgseU1 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-AdCXZrChVIlgseU1 .labelText,#mermaid-svg-AdCXZrChVIlgseU1 .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-AdCXZrChVIlgseU1 .loopText,#mermaid-svg-AdCXZrChVIlgseU1 .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-AdCXZrChVIlgseU1 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-AdCXZrChVIlgseU1 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-AdCXZrChVIlgseU1 .noteText,#mermaid-svg-AdCXZrChVIlgseU1 .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-AdCXZrChVIlgseU1 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-AdCXZrChVIlgseU1 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-AdCXZrChVIlgseU1 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-AdCXZrChVIlgseU1 .actorPopupMenu{position:absolute;}#mermaid-svg-AdCXZrChVIlgseU1 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-AdCXZrChVIlgseU1 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-AdCXZrChVIlgseU1 .actor-man circle,#mermaid-svg-AdCXZrChVIlgseU1 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-AdCXZrChVIlgseU1 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 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.hkea.cn/news/14415371/

相关文章:

  • 网站模版整站下载wordpress教育模板
  • phpmyadmin做网站商品网站
  • 凡科用模板做网站17货源网一件代发
  • 乡镇网站建设内容规划wordpress地址如何修改密码
  • 珠海横琴天聚建设工程有限公司网站英文视频网站如何做外链
  • 昆山汽车网站建设东城建站推广
  • 网络公司怎么优化网站小程序开发平台官网
  • 世纪明珠网站建设类似凡科建站的平台
  • 中文域名解析网站网牛网站建设
  • 17一起广州做网站专业网站策划
  • 销售平台网站建设知名小蚁人网站建设
  • 哪里有放网站的免费空间官方网站制作公司
  • 自学搭建网站网站建设开发方式
  • 网站建设先进部门评选标准wordpress 多店铺
  • 横沥做网站的电话种植园网站模板
  • 网站搭建教程视频seo关键词优化推广外包
  • 怎么建一个网站卖东西昆山哪里有人做网站
  • php简易购物网站开发关键词优化营销
  • 制作企业网站步骤旅游网站策划方案
  • 代理充值平台网站服务好质量好的app开发
  • 海阳市城建设局网站响应式网站开发方法
  • 苏州知名高端网站建设微信网站搭建哪家好
  • 什么是网站维护费室内设计效果图手绘图
  • 帝国cms手机网站开发公司移交物业清单
  • 岳阳建设银行网站站群软件
  • 做网站用到的工具论述网站推广的方法与技巧
  • 八字排盘网站建设高中信息技术课程做网站
  • 海外网站建设教程汕头百度网络推广
  • 中小企业外贸网站建设现状wordpress 会员登录
  • 海门网站建设培训网站域名注册证书查询