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

衡水网站建设公司网站识别手机电脑自动跳转

衡水网站建设公司,网站识别手机电脑自动跳转,佛山网站建设公司经营范围,温州集团网站建设公司概念 Spring循环依赖是指两个或多个Bean之间相互依赖#xff0c;形成了双向依赖关系#xff0c;导致Spring无法正确地完成Bean的创建和初始化。 Spring框架为了解决循环依赖问题#xff0c;采用了三级缓存的方式来解决。 第一级缓存#xff1a;单例池中的三级缓存 每个B…概念 Spring循环依赖是指两个或多个Bean之间相互依赖形成了双向依赖关系导致Spring无法正确地完成Bean的创建和初始化。 Spring框架为了解决循环依赖问题采用了三级缓存的方式来解决。 第一级缓存单例池中的三级缓存 每个Bean在被创建时会先放入单例池中的一级缓存singletonObjects如果这个Bean被其他的Bean依赖那么会先从一级缓存中获取如果一级缓存中还没有那么就会继续创建。 第二级缓存提前暴露对象解决循环依赖 如果一个Bean被创建出来但是其中某个属性引用的是当前Bean类型的另一个Bean这时候Spring会将当前Bean提前暴露放入到单例池中的二级缓存earlySingletonObjects中这样在创建该属性引用的Bean时就可以直接从二级缓存中获取避免了创建中的循环依赖问题。 第三级缓存解决循环依赖 如果Spring在从一级和二级缓存中获取Bean时还是出现了循环依赖那么Spring就会放弃从缓存中获取Bean而创建一个新的Bean并将其放入到单例池中的三级缓存singletonFactories中这个Bean创建完成后Spring会对它进行属性填充并将其放入到一级缓存中最终完成Bean的创建和初始化。 需要注意的是循环依赖是一个比较容易出现的问题虽然Spring采用了三级缓存的方式解决了这个问题但在实际项目中还是要尽可能避免循环依赖的出现。 报错 binanceAggTradeListener defined in file [F:\git\eladmin\quantify-op-be\quantify-op-be\quantify-system\target\classes\me\zhengjie\listener\BinanceAggTradeListener.class] ↓ orderServiceImpl defined in file [F:\git\eladmin\quantify-op-be\quantify-op-be\quantify-system\target\classes\me\zhengjie\modules\system\service\impl\OrderServiceImpl.class] ↓ orderRecordServiceImpl ┌─────┐ | commonServiceImpl ↑ ↓ | copyTradingServiceImpl └─────┘ 分析 因为有3个服务的代码一致所以抽取了一个公共方法公共方法中也有需要调用其中一个服务的方法所以就出现了循环依赖 方案 使用 setter/field 方法注入 上面说到只有构造方法是在上下文加载时就要求被注入容易出现依赖循环。所以可以用其他的方式进行依赖注入setter 和 field 方法注入与构造方法不同它们不会在创Bean时就注入依赖而是在被需要时才注入。 private CopyTradingService copyTradingService;2.解决Spring 循环依赖的一个简单方法就是对一个Bean使用延时加载。也就是说这个Bean并没有完全的初始化完实际上他注入的是一个代理只有当他首次被使用的时候才会被完全的初始化 Autowiredpublic CommonServiceImpl(Lazy CopyTradingService copyTradingService) {this.copyTradingService copyTradingService;}总结 循环依赖是Spring框架中一个常见的问题它发生在两个或更多的bean相互依赖导致Spring无法正确地创建它们。解决循环依赖的问题需要理解Spring的依赖注入机制以及bean的生命周期。 首先Spring的依赖注入有两种方式构造器注入和属性注入。构造器注入是将依赖对象作为构造函数的参数传递给bean而属性注入则是将依赖对象赋值给bean的属性。当两个bean相互依赖时构造器注入更容易解决循环依赖的问题因为可以在构造对象时完成依赖的注入。 解决循环依赖的几种方法 使用构造器注入通过将依赖对象作为构造函数的参数传递给bean可以避免属性依赖导致的循环引用。 使用setter注入如果不能修改源代码可以使用setter注入方式将依赖对象赋值给bean的属性。但是这种方式容易产生循环依赖的问题因为setter方法是在对象创建后才被调用。 使用Lazy注解Spring提供了Lazy注解可以将依赖对象的创建延迟到真正使用时。这样可以在一定程度上解决循环依赖的问题但会增加系统的复杂性和性能开销。 使用接口如果两个bean之间存在循环依赖可以尝试将它们抽象为一个接口通过接口进行通信。这样可以避免直接依赖具体类导致的循环引用问题。 重构代码从设计层面解决循环依赖的问题是最理想的方案。可以考虑将循环依赖的部分提取出来作为一个独立的类或者服务从而消除原始代码中的循环依赖。 总之解决循环依赖的问题需要结合具体的业务场景和代码结构选择合适的方法进行优化。同时要注意代码的可读性和可维护性避免过度设计导致代码复杂度增加。
http://wiki.neutronadmin.com/news/414460/

相关文章:

  • 网站弹窗设计阿里巴巴网站建设公司
  • 南通哪些公司做网站dede wap网站模板下载
  • 网站开发人员工作内容网站ip做网站
  • 北京昌平网站设计互联网开发技术
  • 网站一年费用国外饮品网站
  • 湖北建设执业注册中心网站哪里有免费的ppt模板下载网站
  • 网站建设流程 文档百度推广是干什么的
  • 营销网站开发系统天津企业如何建网站
  • 手机网站怎样排版最好梅兰商贸网站开发设计
  • 如何做一个与博物馆相关网站重庆网站设计开发培训学校
  • 莆田建设银行官方网站怎么查询网站是否被收录
  • asp.net 企业官网网站 源码 多风格 多模板 多皮肤dw做网站表格插不到右边
  • iis网站后台登不进怎么样制作自己的网站
  • excel网站建设网站平台建设服务合同
  • 哪个网站做演唱会门票做海报创客贴同类网站
  • 如何做网站主页网站建设itcask
  • 橙色的网站深圳有几个区哪个区最繁华
  • 做购物网站多少钱子网站怎么建设
  • 沈阳推广网站建筑培训网成绩查询
  • 杭州建设信用网网站定制网站建设托管
  • 荣成市信用建设官方网站网站系统jsp模板
  • 网站建设的过程有哪些做网站需要api吗
  • 做高清视频的网站网站建设陆金手指谷哥9
  • 脉脉用的什么技术做网站wordpress自动采集aote
  • 网站宣传平台wordpress对接公众号源码
  • 长岛网站建设费用找外贸工作哪个网站好
  • 做图片网站会侵权吗设计师查询网站
  • 做html网站搜索框代码北湖区网站建设哪家好
  • 怎么建立简单网站郑州h5网站建设价格
  • 成都手机网站建设价格wordpress 过期时间