SpringBoot 2.6.x
不推荐使用循环依赖,这是一个好消息,SpringBoot从底层逐渐引导开发者书写规范的代码,同时也是个忧伤的消息,循环依赖的应用场景实在是太广泛了。
如果从低版本升级到2.6.x
,那么很大概率遇到的第一个问题便是循环依赖问题。
1、粗暴解决
spring:
main:
allow-circular-references: true
2、优雅解决
Spring官方默认禁止使用循环依赖,尽管留有可选配置,允许开发者继续使用循环依赖。
Spring官方的初心是不希望开发者编写循环依赖的代码,也就是说未来的某个版本可能强制不得使用循环依赖,因此逐渐在新项目中消除循环依赖是不得不面对的问题。
使用方法的返回值获取实例对象,替换通过成员变量注入实例对象。
@Service
public class TbDeptServiceImpl extends ServiceImpl<TbDeptMapper, TbDept> implements ITbDeptService {
/**
* 使用方法返回实例对象,替换成员变量注入
* @return ITbStaffService
*/
public ITbStaffService getStaffService(){
return SpringUtils.getBean(ITbStaffService.class);
}
}