springboot循环依赖的加载顺序
时间: 2023-08-24 22:15:33 浏览: 143
详解Spring Boot 配置加载顺序及属性加载顺序
在Spring Boot中,循环依赖是指两个或多个Bean之间存在相互依赖关系的情况。Spring Boot使用了延迟初始化和三级缓存的机制来解决循环依赖问题。
下面是Spring Boot中循环依赖的加载顺序:
1. 首先,Spring Boot会创建所有Bean的实例,但不会进行初始化。
2. 然后,Spring Boot会将每个Bean的实例放入到第一级缓存中。
3. 接下来,Spring Boot会解析每个Bean的依赖关系,并将其放入到第二级缓存中。
4. 然后,Spring Boot会开始初始化Bean,初始化的过程中,如果发现循环依赖,会从第二级缓存中获取已经创建的Bean实例。
5. 如果第二级缓存中没有已经创建的Bean实例,Spring Boot会调用构造函数创建一个新的实例,并将其放入到第三级缓存中。
6. 最后,Spring Boot会完成Bean的初始化,并将其放入到第一级缓存中。
需要注意的是,如果循环依赖链过长或存在循环依赖无法解决的情况,Spring Boot会抛出BeanCurrentlyInCreationException异常。
总结起来,Spring Boot通过缓存和延迟初始化的机制解决循环依赖问题,并确保Bean的正确加载顺序。
阅读全文