zoukankan      html  css  js  c++  java
  • spring中相互依赖的问题

    针对于使用注解的方式进行依赖注入。

    场景:A类中需要注入B类的实例对象,B类中需要注入A类的实例对象

    * spring容器存在三级缓存   一级   二级   三级   先从一级缓存开始获取
    * 三级 singletonFactories : 单例对象工厂的cache 其中的对象还没有初始化
    * 二级 earlySingletonObjects :提前暴光的单例对象的Cache 。其中的对象可能只有部分属性被赋值【用于检测循环引用,与singletonFactories互斥】
    * 一级 singletonObjects:单例对象的cache 其中的对象完成初始化
    *
    * 例如: 在创建了A对象之后,singletonFactories三级缓存中就存在此对象,虽然还并不完整(提前暴露)。
    * 然后会进行初始化,为属性B赋值,此时在三个缓存中找不到该对象(假如该对象还没有创建),
    * 然后对于B进行实例化并且初始化,初始化的时候发现需要依赖A对象,
    * 可以从三级缓存中取到该对象并且进行赋值,然后将其放入二级缓存 earlySingletonObjects,
    * B对象初始化完成,就会放入到一级缓存singletonObjects,
    * 接下来就会继续进行A对象的初始化,可以从二级缓存中获取到A对象,从一级缓存中找到B对象进行赋值。
    *
    * A对象初始化完成之后,B对象中指向A对象的引用所对应的对象就是完整的A对象
  • 相关阅读:
    微信商城中使用微信支付接口获取用户地址
    微信支付开发流程
    沉默多年,重新开博
    Extjs 表单验证后,几种错误信息展示方式
    自己对Extjs的Xtemplate的忽略
    js execCommand
    支付宝支付
    C# 将短时间格式变长正常时间格式
    SortedDictionary
    sql操作
  • 原文地址:https://www.cnblogs.com/joeking/p/13141332.html
Copyright © 2011-2022 走看看