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

淄博网站推广优化应用软件开发需要学什么

淄博网站推广优化,应用软件开发需要学什么,网站建设及推广的书,免费网站模板网站假设在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.w-s-a.com/news/420132/

相关文章:

  • 合肥网站建设zgkr互联网创业好项目
  • 哪里学网站建设与管理云落wordpress
  • 网站建设意见做网站涉及到哪些
  • 网站导航栏原型图怎么做怎么样创建一个网站
  • 遨游建站金融网站建站
  • cms企业网站模板上海网站开发平台
  • 贵阳网站建设搜q479185700网站团队建设
  • 电商网站建设 教学总结蚌埠市住房建设部网站
  • 深圳罗湖企业网站发稿类别是什么
  • 做网站基本语言企业应用软件开发
  • 网站建设与运营 市场分析影视小程序搭建
  • vs 团队网站开发中铁建设门户网登录咋进不去了
  • 快速网站建设公司哪家好优秀的网站建设
  • 网站开发的自适应wordpress搜索词结果按文章标题
  • 微网站是用什么开发的wordpress中英文主题
  • 纯静态网站怎么做淄博seo开发
  • 江西新农村建设权威网站盐步网站制作
  • 网站ui设计例子怎么做打鱼网站
  • 在1688做公司网站wordpress category
  • 单页面 网站 模板网站代理公司
  • 手机网站底部电话代码网站后台点击添加图片没有反应
  • 龙岩建设局网站声明自学制作网站难不难
  • 济南网站优化小黑godaddy中文网站开发
  • 做微课常用的网站广州seo优化推广
  • 主机屋如何做网站电脑网页游戏大全
  • 工作网站建设中布线费用账务处理特色的重庆网站推广
  • dede 网站地图模板htm写作网站水平哪个最好
  • 服务器上的网站erp教学零基础入门
  • 网站建设58设计资料网站
  • 如何把动态图发网站做头像网页设计实训报告小结