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对象
  • 相关阅读:
    SNMP概述–运维必知的协议基础
    关于多线程情况下Net-SNMP v3 版本导致进程假死情况的跟踪与分析
    关于snmp octet string和普通string问题
    SVN状态说明
    SNMP mib文件说明
    Linux之 proc文件系统
    django .all .values .value_list 数据库获取数据
    Django form验证
    JSONP实现
    iframe和form表单实现ajax请求上传数据
  • 原文地址:https://www.cnblogs.com/joeking/p/13141332.html
Copyright © 2011-2022 走看看