spring循环依赖问题:
循环依赖是针对成员变量—单例才可以解决setter方法循环依赖,多例是无法解决循环依赖的
- 构造器方法依赖—无法解决
- setter方法依赖—可以解决
循环调用针对方法是无法解决的。
@Component
public class CommonService {
public CommonService(UserAService userAService) {
this.userAService = userAService;
}
private UserAService userAService;
public void test() {
System.out.println("test");
}
}
@Component
public class UserAService {
public UserAService(CommonService commonService) {
this.commonService = commonService;
}
private CommonService commonService;
private void test() {
commonService.test();
}
}
Description:
The dependencies of some of the beans in the application context form a cycle:
┌─────┐
| commonService defined in file [/Users/xuleyan/code/final-gateway/finals-web/target/classes/com/xuleyan/finals/web/Service/CommonService.class]
↑ ↓
| userAService defined in file [/Users/xuleyan/code/final-gateway/finals-web/target/classes/com/xuleyan/finals/web/Service/UserAService.class]
└─────┘
如果给CommonService和UserService标记上@Scope("prototype"),会出现以下问题:【表明多例也是无法解决循环依赖的】
Description:
The dependencies of some of the beans in the application context form a cycle:
testXController
┌─────┐
| userAService
↑ ↓
| commonService
└─────┘