图解Spring的循环依赖
这里是A和B相互依赖的场景:
关键源码:get
关键源码:add
补充:除了Spring提供的三级缓存解决方案,还提供了注解或者扩展点,手动定义Bean 的加载顺序
1.使用@DependsOn
注解,明确指定一个Bean在初始化之前,必须先初始化另一个或多个Bean。
2.实现InitializingBean
接口 通过实现afterPropertiesSet()
方法,在Bean的属性设置完成后执行自定义初始化逻辑。
3.使用@PostConstruct
注解 标注在方法上,该方法会在依赖注入完成后自动执行