spring boot 怎么处理循环依赖问题的
时间: 2024-01-29 14:03:14 浏览: 74
springbootM-Classify-笔记
在Spring Boot中,处理循环依赖问题的机制与Spring Framework是一样的。Spring Boot使用了Spring Framework的依赖注入机制来解决循环依赖问题。具体来说,Spring Boot使用了三级缓存来处理循环依赖问题。
1. 第一级缓存:singletonObjects
这是Spring Bean的默认作用域,它是一级缓存,用于存放已经完成初始化的Bean。当需要获取一个Bean时,Spring会先从singletonObjects缓存中查找,如果能够找到,则直接返回,否则进入下一级缓存。
2. 第二级缓存:earlySingletonObjects
这是二级缓存,用于存放正在创建中的Bean。当一个Bean正在创建中时,它会被存放到earlySingletonObjects缓存中。当依赖注入需要用到这个Bean时,Spring会先从earlySingletonObjects缓存中查找,如果能够找到,则返回,否则进入下一级缓存。
3. 第三级缓存:singletonFactories
这是三级缓存,用于存放创建Bean的工厂方法。当需要创建一个Bean时,Spring会先从singletonFactories缓存中查找,如果能够找到,则使用这个工厂方法创建Bean,并将创建出来的Bean放入earlySingletonObjects缓存中,否则进入下一级缓存。
通过这样的机制,Spring Boot能够在处理循环依赖问题时,保证Bean的正确创建和初始化。当出现循环依赖时,Spring Boot会抛出BeanCurrentlyInCreationException异常,提示开发者需要解决循环依赖问题。
阅读全文