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

时间:2017-01-26 07:22:45

标签: java spring oop design-patterns spring-ioc

我遇到以下问题:

我正在尝试按如下方式创建bean:

@Bean
public abc createABC() {
    return new ABC(--, def(),--);
}

`

@Bean
public DEF def() {
    return new DEF(--, createABC(),--
}

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

1 个答案:

答案 0 :(得分:6)

  

它表明设计不好?

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

ABC具有DEF应具有的逻辑,反之亦然。您应该重构这些类,以使ABC取决于DEFDEF取决于ABC,但不能同时取决于TempDunno