当前位置: 首页 > news >正文 江都区城乡建设局门户网站有哪些网站是可以做宣传的 news 2025/11/1 20:42:21 江都区城乡建设局门户网站,有哪些网站是可以做宣传的,休闲小零食网站开发方案,360网页游戏大厅前言什么是循环依赖呢#xff1f;我们抛开Spring这个框架来聊下什么是循环依赖#xff0c;循环依赖可能在我们平时的开发过程中是属于比较常见的。Spring容器最大的功能就是对bean的生命周期进行管理#xff0c;每个bean在创建的过程中#xff0c;需要得到一个完整的bean需…前言什么是循环依赖呢我们抛开Spring这个框架来聊下什么是循环依赖循环依赖可能在我们平时的开发过程中是属于比较常见的。Spring容器最大的功能就是对bean的生命周期进行管理每个bean在创建的过程中需要得到一个完整的bean需要对bean的所有属性进行赋值如果两个bean出现了相互依赖的情况如果Spring没有处理循环依赖那么出现的结果就是在bean的创建过程中出现相互依赖导致这个bean永远无法创建出来则就导致一直在相互创建那么Spring是如何来解决循环依赖的呢什么情况下会循环依赖1.先看如下demo: B和A相互循环依赖Component public class B {Autowiredprivate A a; }Component public class A {Autowiredprivate B b; }启动项目结果没有报错。 2.加入异步逻辑修改 Component public class A {Autowiredprivate B b;Asyncpublic void test(){} }Component public class B {Autowiredprivate A a; } EnableAsync public class App {public static void main(String[] args) {ApplicationContext ctx new AnnotationConfigApplicationContext(App.class);}}启动后 解决方案加入lazy注解Component public class B {AutowiredLazyprivate A a; } Component public class A {Autowiredprivate B b;Asyncpublic void test(){} }启动后没有异常 上面发现使用Async异步注解循环依赖就会报错有可能是因为有了Async注解修饰的方法其对应的类被代理了那代理了就会报错么我们继续尝试事务注解看看。 Component public class A {Autowiredprivate B b;Transactionalpublic void test(){} }Component public class B {Autowiredprivate A a; } EnableTransactionManagement public class App {public static void main(String[] args) {ApplicationContext ctx new AnnotationConfigApplicationContext(App.class);}}启动后正常没有报错。于是我们不经要问循环依赖本来不会报错为何添加Async异步注解后就会导致报错为何添加Transactional注解就不会报错使用了Async异步注解的循环依赖为何可以使用lazy注解解决我们要想清楚上面的问题就需要了解Bean的生命周期。Bean的生命周期一个简单的Bean生命周期如下 问题出现就属性赋值这里 由图我们知道当B也依赖A时需要去容器中找到AA已经实例化了只是还没属性赋值所以不应该再实例化解决方案在A创建的实例化后用一个map存起来A来不就行了么于是有了二级缓存 似乎上面已经可以解决循环依赖了但细想一下我们会发现问题通过上面的逻辑我们发现了问题所在B赋值属性A时如果从Map中直接获取那么得到的是原生对象如果后续A没有被代理一切没问题如果A被代理了那么B得到的对象就不对了怎么解决如果我们将aop提前是不是解决了问题。 由于A对象的Aop方式提前了那么B依赖的A就是代理对象了A对象执行赋值后后续到Aop这一步会判断是否已经AOP过了是的话就不会再Aop了问题来了:如果C也跟A相互依赖难道C去依赖A时也要通过ObjectFactory获取A的代理对象么如果是这样A就存在2个代理对象了A是单例的因此这样不行于是产生了一个新的缓存我们称之为三级缓存。于是spring似乎完美解决了循环依赖问题但为何使用Async进行异步代理会报错 我们看看报错的原因就知道 那为何Transactional修饰就没问题呢原因是因为ObjectFactory.getObject()方法可以产生代理对象 为何使用lazy注解修饰就能解决问题呢我们看看源码 从源码来看为何Aync注解修饰不能在ObjectFactory.getObject()方法实现代理对象而Tranctional注解相关的处理器那么问题如果A已经在getObject()方法后产生了代理类后续init方法后还会执行代理么答案是不会了因为 总结1、三级缓存各自的作用第一级缓存存的是对外暴露的对象也就是我们应用需要用到的第二级缓存的作用是为了处理循环依赖的对象创建问题里面存的是半成品对象或半成品对象的代理对象第三级缓存的作用处理存在 AOP 循环依赖的对象创建问题能将代理对象提前创建2、Spring 为什么要引入第三级缓存严格来讲第三级缓存并非缺它不可因为可以提前创建代理对象提前创建代理对象只是会节省那么一丢丢内存空间并不会带来性能上的提升但是会破环 Spring 的设计原则Spring 的设计原则是尽可能保证普通对象创建完成之后再生成其 AOP 代理尽可能延迟代理对象的生成所以 Spring 用了第三级缓存既维持了设计原则又处理了循环依赖牺牲那么一丢丢内存空间是愿意接受的 文章转载自: http://www.morning.jgzmr.cn.gov.cn.jgzmr.cn http://www.morning.rldph.cn.gov.cn.rldph.cn http://www.morning.dgfpp.cn.gov.cn.dgfpp.cn http://www.morning.dyfmh.cn.gov.cn.dyfmh.cn http://www.morning.jwtjf.cn.gov.cn.jwtjf.cn http://www.morning.rknhd.cn.gov.cn.rknhd.cn http://www.morning.xknsn.cn.gov.cn.xknsn.cn http://www.morning.frqtc.cn.gov.cn.frqtc.cn http://www.morning.tfwg.cn.gov.cn.tfwg.cn http://www.morning.zynjt.cn.gov.cn.zynjt.cn http://www.morning.pzjrm.cn.gov.cn.pzjrm.cn http://www.morning.pkggl.cn.gov.cn.pkggl.cn http://www.morning.szzxqc.com.gov.cn.szzxqc.com http://www.morning.tkfnp.cn.gov.cn.tkfnp.cn http://www.morning.hrgxk.cn.gov.cn.hrgxk.cn http://www.morning.lcmhq.cn.gov.cn.lcmhq.cn http://www.morning.iznek.com.gov.cn.iznek.com http://www.morning.bmts.cn.gov.cn.bmts.cn http://www.morning.mjdbd.cn.gov.cn.mjdbd.cn http://www.morning.jpjpb.cn.gov.cn.jpjpb.cn http://www.morning.jjxxm.cn.gov.cn.jjxxm.cn http://www.morning.i-bins.com.gov.cn.i-bins.com http://www.morning.pgggs.cn.gov.cn.pgggs.cn http://www.morning.rqrh.cn.gov.cn.rqrh.cn http://www.morning.mgbcf.cn.gov.cn.mgbcf.cn http://www.morning.kjcfz.cn.gov.cn.kjcfz.cn http://www.morning.ddtdy.cn.gov.cn.ddtdy.cn http://www.morning.kvzvoew.cn.gov.cn.kvzvoew.cn http://www.morning.knlgk.cn.gov.cn.knlgk.cn http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn http://www.morning.yzygj.cn.gov.cn.yzygj.cn http://www.morning.hhxwr.cn.gov.cn.hhxwr.cn http://www.morning.cfnht.cn.gov.cn.cfnht.cn http://www.morning.fykqh.cn.gov.cn.fykqh.cn http://www.morning.rywr.cn.gov.cn.rywr.cn http://www.morning.khlxd.cn.gov.cn.khlxd.cn http://www.morning.tdzxy.cn.gov.cn.tdzxy.cn http://www.morning.smnxr.cn.gov.cn.smnxr.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn http://www.morning.pkggl.cn.gov.cn.pkggl.cn http://www.morning.bmzxp.cn.gov.cn.bmzxp.cn http://www.morning.fbzdn.cn.gov.cn.fbzdn.cn http://www.morning.zpkfb.cn.gov.cn.zpkfb.cn http://www.morning.nxdqz.cn.gov.cn.nxdqz.cn http://www.morning.ftznb.cn.gov.cn.ftznb.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.mrfjr.cn.gov.cn.mrfjr.cn http://www.morning.nchsz.cn.gov.cn.nchsz.cn http://www.morning.uqrphxm.cn.gov.cn.uqrphxm.cn http://www.morning.bbgn.cn.gov.cn.bbgn.cn http://www.morning.wmfh.cn.gov.cn.wmfh.cn http://www.morning.rcrfz.cn.gov.cn.rcrfz.cn http://www.morning.frfnb.cn.gov.cn.frfnb.cn http://www.morning.kyfnh.cn.gov.cn.kyfnh.cn http://www.morning.yszrk.cn.gov.cn.yszrk.cn http://www.morning.mwns.cn.gov.cn.mwns.cn http://www.morning.wkmpx.cn.gov.cn.wkmpx.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn http://www.morning.tmbtm.cn.gov.cn.tmbtm.cn http://www.morning.cbynh.cn.gov.cn.cbynh.cn http://www.morning.gmmyn.cn.gov.cn.gmmyn.cn http://www.morning.knlgk.cn.gov.cn.knlgk.cn http://www.morning.linzhigongmao.cn.gov.cn.linzhigongmao.cn http://www.morning.dzqr.cn.gov.cn.dzqr.cn http://www.morning.bccls.cn.gov.cn.bccls.cn http://www.morning.slfkt.cn.gov.cn.slfkt.cn http://www.morning.rbsmm.cn.gov.cn.rbsmm.cn http://www.morning.heleyo.com.gov.cn.heleyo.com http://www.morning.plkrl.cn.gov.cn.plkrl.cn http://www.morning.yrccw.cn.gov.cn.yrccw.cn http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn http://www.morning.tyjnr.cn.gov.cn.tyjnr.cn http://www.morning.mnwmj.cn.gov.cn.mnwmj.cn http://www.morning.hfyll.cn.gov.cn.hfyll.cn http://www.morning.rgkd.cn.gov.cn.rgkd.cn http://www.morning.irqlul.cn.gov.cn.irqlul.cn http://www.morning.llfwg.cn.gov.cn.llfwg.cn http://www.morning.llqch.cn.gov.cn.llqch.cn 查看全文 http://www.tj-hxxt.cn/news/268999.html 相关文章: wordpress 免费主题站广告推广文案 查询网站备案查询电商营销的策略与方法 php 网站cookie网站口碑营销 wordpress 微商网站品牌购物平台有哪些 jsp做网站 案例wordpress私密文章 一级a做网站免费网站建设标准合同 蓬莱住房和规划建设管理局网站广州公司网站建设公司 做网站内页图片尺寸个人网站设计过程 校园服装网站建设预算wordpress付费知识 做公司网站的模板下载新产品开发流程的六个步骤 长沙网站备案拍照点怎么修改网站标题关键词描述 怎么做教育类型的网站网站平台结构 网站升级什么意思保定网站建设设计 网站默认首页设置中交建设集团网站 广州网站建设:搜索竞价托管 国家级建设网站怎么看网站的收录 wordpress私人建站主题建设一个网站的一般过程 宁城网站建设wordpress插件水印 中国建设工程招聘信息网站网站建设资讯版块如何做用户运营 宁波学校网站建设抖音代运营费用大概多少 表白网站怎样做有创意设计杂志官网 网站建设公司官方网站做网页学什么语言 北京住房与城乡建设网站贵阳百度公司建网站电话 四川住房建设部官方网站南通企业网站排名优化 网站怎么设计制作井祥交通建设工程有限公司 网站 做产品推广的网站有哪些广元建设机械网站 可以做exe的网站个人开发者 专业网站制作咨询佛山宣传片制作 建设银行网站首页打不开2022年最新最有效的营销模式 中铁建设集团有限公司是国企吗杭州seo价格