当前位置: 首页 > 知识库问答 >
问题:

在同一个类中创建Bean的Spring自动连接导致:请求的Bean当前处于创建中,错误*

呼延珂
2023-03-14

我知道这个错误是不言而喻的,但是当我将rest模板的设置从构造函数移除到@autowired@qualifier(“myRestTemplate”)private RestTemplate时,它就起作用了。

只是想知道,如果同一个类有bean定义我要自动连接的东西,我如何在构造函数中做到这一点?

org.springframework.beans.factory.beanCurrentlyIncreationException:创建名为“xxx”的bean时出错:请求的bean当前正在创建中:是否存在不可解析的循环引用?

@Component
public class xxx {

 private RestTemplate restTemplate;

 @Autowired
 public xxx(@Qualifier("myRestTemplate") RestTemplate restTemplate) {
   this.restTemplate = restTemplate;
 }

 @Bean(name="myRestTemplate")
 public RestTemplate getRestTemplate() {
    return new RestTemplate();
 }

}

共有1个答案

司寇善
2023-03-14

常规@component注释类中的@bean方法是以Lite-mode方式处理的。

我不知道你为什么要这么做。如果您的xxx类控制RestTemplate的实例化,那么没有什么理由不在构造函数中自己执行(除非您打算将其公开给上下文的其余部分,但有更好的解决方案)。

无论如何,要让Spring调用getRestTemplate工厂方法,它需要xxx的实例。要创建xxx的实例,它需要调用其构造函数,该构造函数需要RestTemplate,但您的RestTemplate当前正在构造中。

您可以通过使GetRestTemplateStatic来避免此错误。

@Bean(name="myRestTemplate")
public static RestTemplate getRestTemplate() {
    return new RestTemplate();
}

在这种情况下,Spring不需要xxx实例来调用getRestTemplate工厂方法。

 类似资料:
  • 我有以下错误:创建名为'securityConfig'的bean时出错:请求的bean当前正在创建中:是否有不可解析的循环引用? 我该怎么解决呢?

  • 我需要在运行时使用动态bean工厂为不同条件创建不同类的动态bean。它是用于一般DAO实现的。如何使用Java配置实现它?? MVC初始化类 使用原型bean配置

  • 我对JAVA web应用程序非常陌生,所以请记住这一点。我承担了一个非常大的项目,令人望而生畏。我终于修复了Maven依赖,现在在Tomcat上运行时遇到了第一个错误。 包含eu.digient.billfold.goshgame.game.level.ItemConfigFactoryImpl模块的Spring配置:

  • 我正在创建JavaMailSender的bean类,并自动拥有javamailsender,但我得到错误 我不能为bean id="mail Sender"创建bean类。我在过去的两天里一直在努力,请让我离开它。 和错误页 组织。springframework。豆。工厂BeanCreationException:创建名为“employeeController”的bean时出错:自动连线依赖项的注

  • 问题内容: 知道为什么我会收到这个例外吗? 问题答案: 我怀疑如果是接口(是吗?),您将不会遇到此错误。我相信您可能有一个正在使用cglib代理,执行魔术等操作的类,最后,它不能安全地转换为setter或构造函数中的参数。尝试对接口进行编程,看看错误是否消失。 更新 :不是接口。这是一个扩展的类。 鉴于此,我建议您尝试以下操作: 重命名为。 从已命名的接口中提取一个接口(例如“ ”) 浏览所有使用

  • 我正在从事SpringBoot与Spring集成项目。升级应用程序时,我遇到以下错误(仅在pivotal cloud上,而不是本地)- 上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆。工厂未满足的依赖项异常:创建名为“cloudDataBaseConfiguration”的bean时出错:通过字段“cloud”表示未满足的依赖项:创建名为“cloudMultiH