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);
添加回答
举报