本文介紹了在同一類中創建Bean的Spring Autoire結果為:請求的Bean當前處于創建錯誤中*的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我知道這個錯誤是不言而喻的,但是當我將REST模板的設置從構造函數刪除到@Autwire@Qualifier(“myRestTemplate”)私有RestTemplate REST模板時,它起作用了。
我只想知道,如果同一個類具有我試圖自動綁定的內容的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
常規@Component
批注類中的方法以稱為精簡模式的方式處理。
我不知道你為什么要這么做。如果您的xxx
類控制RestTemplate
的實例化,則沒有太多理由不在構造函數中自己進行實例化(除非您打算將其公開給上下文的其余部分,但也有更好的解決方案)。
無論如何,為了讓Spring調用getRestTemplate
工廠方法,它需要一個xxx
的實例。若要創建xxx
的實例,它需要調用其構造函數,該構造函數需要RestTemplate
,但您的RestTemplate
當前正在構造中。
您可以通過設置getRestTemplate
static
來避免此錯誤。
@Bean(name="myRestTemplate")
public static RestTemplate getRestTemplate() {
return new RestTemplate();
}
在這種情況下,Spring不需要xxx
實例來調用getRestTemplate
工廠方法。
這篇關于在同一類中創建Bean的Spring Autoire結果為:請求的Bean當前處于創建錯誤中*的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,