Spring 循环依赖
2021-07-09 22:30:59 19 举报
Spring 循环依赖源码解析
作者其他创作
大纲/内容
确定beanName 后获取 Bean对象descriptor.resolveCandidate
解析找到 Bean 对象 doResolveDependency
按照注入点注入 InjectionMetadata#inject
如果能够找到
存入三级缓存 addSingletonFactory
A 类查找 B 字段属性
创建Bean完成加入单例池,移除二级缓存
属性赋值 populateBean
入口方法 doCreateBean 创建A类的实例 a
getSingleton(String beanName)
doGetBean
1. 先查单例池,再查找二级缓存,最后查找三级缓存 如果三级缓存中能找到singletonFactory.getObject()从三级缓存中移动到二级缓存中。然后返回,如果都找不到就返回null
放入三级缓存 singletonFactories / ObjectFactory
查找依赖 Bean resolveDependency
完成属性赋值
入口方法 getBean
创建实例 createBeanInstance
查找元数据 findAutowiringMetadata
AutowiredAnnotationBeanPostProcessor#postProcessProperties
属性注入 field inject
0 条评论
下一页