美文网首页
循环依赖

循环依赖

作者: 菊地尤里 | 来源:发表于2023-04-16 10:47 被阅读0次

1.简单对象间的循环依赖处理

2.AOP对象间的循环依赖处理

protected Object getEarlyBeanReference(String beanName, RootBeanDefinition mbd, Object bean) {   
Object exposedObject = bean;
if (!mbd.isSynthetic() && hasInstantiationAwareBeanPostProcessors()) {
for (BeanPostProcessor bp : getBeanPostProcessors()) {
// 看到这个判断了吗,通过@EnableAsync导入的后置处理器
// AsyncAnnotationBeanPostProcessor根本就不是一个SmartInstantiationAwareBeanPostProcessor
// 这就意味着即使我们通过AsyncAnnotationBeanPostProcessor创建了一个代理对象
// 但是早期暴露出去的用于给别的Bean进行注入的那个对象还是原始对象
if (bp instanceof SmartInstantiationAwareBeanPostProcessor) {   
         SmartInstantiationAwareBeanPostProcessor ibp = (SmartInstantiationAwareBeanPostProcessor) bp;  
          exposedObject = ibp.getEarlyBeanReference(exposedObject, beanName);       
  }     
 }   
}
return exposedObject;
}


早期暴露的对象跟最终放入容器中的对象不是同一个,所以报错了
需要加@Lazy这个注解的作用在于,当为B注入A时,会为A生成一个代理对象注入到B中,当真正调用代理对象的方法时,底层会调用 getBean(a) 去创建A对象,然后调用方法,这个注解的处理时机是在 org.springframework.beans.factory.support.DefaultListableBeanFactory#resolveDependency 方法中,处理这个注解的代码位于 org.springframework.context.annotation.ContextAnnotationAutowireCandidateResolver#buildLazyResolutionProxy

相关文章

  • Spring 是如何解决循环依赖的?

    Spring 是如何解决循环依赖的? 循环依赖: Spring 循环依赖有三种情况: 构造器的循环依赖,这种依赖 ...

  • Spring-IOC-循环依赖检测与Bean的创建

    Spring容器的循环依赖检测 Spring容器循环依赖包括:构造器循环依赖和setter循环依赖。 1- 构造器...

  • Spring 对于循环依赖的处理

    什么是循环依赖 循环依赖就是循环引用,就是两个或者多个bean相互之间的持有对方。 循环依赖的类型 构造器循环依赖...

  • Spring源码解析之循环依赖

    什么是循环依赖 简单的说就是A依赖B,B依赖C,C依赖A这样就构成了循环依赖 循环依赖分为构造器依赖和属性依赖,众...

  • 一文详解Spring中的循环依赖,面试必杀技

    目录 前言 什么是循环依赖? 什么情况下循环依赖可以被处理? Spring是如何解决的循环依赖? 简单的循环依赖(...

  • Spring之循环依赖及解决方式

    1.Spring循环依赖 循环依赖指Spring对象之间的循环引用,最终形成死循环。举例: A依赖于B,B依赖于C...

  • 循环依赖

    循环依赖 1、循环依赖的介绍 循环依赖,bean之间相互持有各自的引用,最终形成闭环。比如 bean的实例化有如下...

  • 循环依赖

    https://zhuanlan.zhihu.com/p/62382615[https://zhuanlan.zh...

  • 循环依赖

    循环依赖就是N个类中循环嵌套引用,先考虑一下,面对对面编程,这是一个自然的概念吗?你中有我,我中有你,面向对象。如...

  • 循环依赖

    循环依赖是个典型的问题,我们看下在spring中是如何解决的 class A{ private B b;}cla...

网友评论

      本文标题:循环依赖

      本文链接:https://www.haomeiwen.com/subject/kcufjdtx.html