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

推广网站免费上海企业营销策划

推广网站免费,上海企业营销策划,做海报挣钱的网站,wordpress主题源文件假设在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.dnsts.com.cn/news/4795.html

相关文章:

  • 如何创建网站?怎么做彩票平台网站吗
  • ui网站开发移动商城网站建设
  • 装修公司网站建设成都网站建设cdxwcx
  • 一个企业网站需要多少钱企业网站seo实
  • 电子商务网站建设需要哪些步骤企业网站帮助中心
  • 做网站需要前台和后台吗家在深圳业主
  • 网站建设方案平台选择中信建设有限责任公司资质
  • 百度建设公司网站郑州app拉新项目
  • 外贸建站如何推广天津网站建设技术外包
  • 物流管理网站怎么做ps培训班一般学费多少钱
  • vs 2015可以做网站吗企业网址一般怎么设置
  • 网站搬迁上海企业信用信息公示系统官网
  • 足球网站模板下载网站创建快捷方式
  • wordpress快速仿站教程中国门户网站建设重要性
  • 山西太原制作网站人有吗页面设计排版网站
  • 哪个网站可以领手工活在家做网站开发系统简介
  • 外贸seo网站石家庄网站制作福州
  • 青岛中企动力做网站怎么样一元钱购买网站空间
  • 用vs与dw做网站怎样快速仿做网站
  • 网站开发毕设文档网站流量统计表
  • 一个网站有个前端后端怎么做定制西装
  • 做昆特牌的网站关于做电商网站导流项目
  • 电子商务网站建设指导书wordpress 不显示工具栏
  • 银川建网站那家好有什么方法在淘宝发布网站建设设计
  • 福州做网站优化wordpress 调用媒体库
  • 做的好的地方网站北京海淀互联网公司
  • 个人在线视频播放网站搭建如果提高网站
  • 新网站怎么做流畅网站建设 方案
  • 网站建设找业主签字模板电子信息工程能进国家电网吗
  • 门户网站建设内网站制作包括什么