2 回答

TA貢獻1817條經驗 獲得超6個贊
Himly 引用的答案,不會讓 Spring 創建同名的 bean。它實際上阻止它啟動,因為構建應用程序將失敗。
如果多個 bean 被定義為同名,那么稍后定義的 bean 將覆蓋之前定義的 bean。因此,在您的情況下,只有一個名為的 beanapprove_sign_up_project_request|Task_1tm7e53
將存在,除非您禁用 bean 定義覆蓋。

TA貢獻1884條經驗 獲得超4個贊
我已經明白原因了。
當定義兩個同名不同類型的bean時。春天會選擇最后一個來壓倒其他的。
就我而言,只有一個名為“approve_sign_up_project_request|Task_1tm7e53”的 bean,類型為 StudentTaskToResponseDataConverter。
當我使用名稱和 UserTaskCompleter 類型來獲取 bean 表單 beanFactory 時
,spring 找不到它,然后 spring 將拋出異常。
如何讓spring創建同名bean?
我從這里找到答案
這是答案的導入部分
您可以在構建 Spring Boot 應用程序時使用初始化程序:
@SpringBootApplication
public class SpringBootApp {
public static void main(String... args) {
new SpringApplicationBuilder(SpringBootApp.class)
.initializers(new ApplicationContextInitializer<GenericApplicationContext>() {
@Override
public void initialize(GenericApplicationContext applicationContext) {
applicationContext.setAllowBeanDefinitionOverriding(false);
}
})
.run(args);
}
}
或者使用 java 8:
new SpringApplicationBuilder(SpringBootApp.class)
.initializers((GenericApplicationContext c) -> c.setAllowBeanDefinitionOverriding(false) )
.run(args);
添加回答
舉報