SpringBoot BeanCurrentlyInCreationException但不在没有SpringBoot的另一个模块上

时间:2017-05-11 21:37:07

标签: java spring spring-boot dependency-injection autowired

在我的Web应用程序中,我使用的是以下Spring版本:

<org.springframework-version>3.2.9.RELEASE</org.springframework-version>

我有很多豆子依赖于另一种并形成周期,但没有问题,我可以使用

@Autowired
SampleBean bean

没有任何问题。

现在我正在尝试使用

创建休息服务
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

不幸的是,当我尝试从另一个模块注入bean时,我得到了异常:

Unsatisfied dependency expressed through field 'beanDao'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'beanDao': Bean with name 'beanDao' has been injected into other beans [beanA,beanB] in its raw version as part of a circular reference, but has eventually been wrapped

如何解决?为什么我在没有使用SpringBoot的情况下在SpringBoot上收到此错误但在Web应用程序上没有收到此错误?

1 个答案:

答案 0 :(得分:0)

Spring已经将'beanDao'注入'beanA'和'beanB'。现在它将bean包装成一个代理并抛出异常。

'beanA'和'beanB'不会使用该代理,而是使用原始bean,这是不可能的。这就是为什么春天提出异常。

正如你之前说的那样,看起来新依赖中的某些东西正在创建这个代理。

您可以尝试找出导致代理的原因并以某种方式禁用它。 或者,更好的是,摆脱bean依赖的循环。