[英]Spring BeanCurrentlyInCreationException
我有以下java config類:
@Configuration
public class MyConfig {
@Autowired
private List<MyInterface> myInterfaces;
@Bean
public A a() {
return new A();
}
@PostConstruct
public void postConstruct() {
a().setProperty(myInterfaces);
}
}
每個MyInterface實現都將依賴於bean A,我認為這是循環依賴的來源。 但是,我的期望如下:
誰能闡明我的哪個假設不正確?
您的代碼中有一個循環依賴性:請記住, MyConfig
也是一個bean,因此需要實例化和自動裝配。 為了創建它,需要給它注入所有可用的MyInterface
實例,其中之一需要bean A
,它是由MyConfig
的實例方法創建的,依此類推。
如果要在Spring Boot 1.4+中運行,則會得到以下輸出:
***************************
APPLICATION FAILED TO START
***************************
Description:
The dependencies of some of the beans in the application context form a cycle:
┌─────┐
| interfaceImpl defined in file [/.../InterfaceImpl.class]
↑ ↓
| myConfig (field private java.util.List demo.MyConfig.myInterfaces)
└─────┘
您有兩種選擇:
public A a() {
-> public static A a() {
(因此不需要通過MyConfig
的實例方法創建bean A); 使myInterfaces
成為@Lazy
依賴項(因此實際上僅在訪問時填充):例如
@Autowired @Lazy private List<MyInterface> myInterfaces;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.