Spring注入中的循环依赖 - 这是一个糟糕的设计吗?

use*_*970 3 java oop spring design-patterns spring-ioc

我遇到以下问题:

我正在尝试创建bean如下:

@Bean
public abc createABC() {
    return new ABC(--, def(),--);
}
Run Code Online (Sandbox Code Playgroud)

`

@Bean
public DEF def() {
    return new DEF(--, createABC(),--
}
Run Code Online (Sandbox Code Playgroud)

有任何建议可以解决这个问题,而不必考虑基于setter的注入.这是不良设计的指示吗?在我的情况下,这种依赖是必须的.请提供您的观点

CKi*_*ing 6

它表明糟糕的设计?

绝对.如果ABC取决于DEFDEF依赖于ABC它,则间接意味着您的代码未正确组织.这种循环依赖通常表明您不遵守单一责任原则.

ABC有逻辑DEF应该有,反之亦然.你应该重构这些类,要么ABC取决于DEFDEF取决于ABC但不是两者.

  • 为什么不使用一个类来组合这些调用,而不是将更新方法相互耦合?如果 A 和 B 都需要同时进行,为什么还要单独进行更新,为什么不提供接受 a 和 b 并具有更新方法的更新服务呢? (2认同)