我知道该错误是不言自明的,但是当我将其余模板的设置从构造函数删除为 @Autowired @Qualifier("myRestTemplate") private RestTemplate 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();
}
}
@Bean http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html常规方法@Component
带注释的类的处理方式称为精简模式.
我不知道你为什么要这样做。如果你的xxx
类控制实例化RestTemplate
,没有太多理由不在构造函数中自己执行此操作(除非您打算将其公开给上下文的其余部分,但还有更好的解决方案)。
无论如何,Spring 都会调用你的getRestTemplate
工厂方法,它需要一个实例xxx
。创建一个实例xxx
,它需要调用它的构造函数,该构造函数需要一个RestTemplate
,但是你的RestTemplate
目前正在建设中。
您可以通过以下方式避免此错误getRestTemplate
static
.
@Bean(name="myRestTemplate")
public static RestTemplate getRestTemplate() {
return new RestTemplate();
}
在这种情况下,Spring 不需要xxx
实例来调用getRestTemplate
工厂方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)