覆盖 bean 'X' 的 bean 定义:替换 [Generic bean Y]

Posted

技术标签:

【中文标题】覆盖 bean \'X\' 的 bean 定义:替换 [Generic bean Y]【英文标题】:Overriding bean definition for bean 'X': replacing [Generic bean Y]覆盖 bean 'X' 的 bean 定义:替换 [Generic bean Y] 【发布时间】:2013-10-02 01:40:15 【问题描述】:

我的配置如下:

batch:job id="reconciliationJob" job-repository="jobRepository" restartable="true"

在应用程序上下文启动期间,我在日志中收到类似这样的信息:

[INFO] [] [] 覆盖 bean 'reconciliationJob' 的 bean 定义:替换 [Generic bean: class [org.springframework.batch.core.configuration.xml.SimpleFlowFactoryBean];范围=;摘要=假;懒惰初始化=假;自动线模式=0;依赖检查=0;自动接线候选=真;主要=假;工厂BeanName=null;工厂方法名称=空;初始化方法名=空; destroyMethodName=null] 与 [通用 bean: 类 [org.springframework.batch.core.configuration.xml.JobParserJobFactoryBean];范围=;摘要=假;懒惰初始化=假;自动线模式=0;依赖检查=0;自动接线候选=真;主要=假;工厂BeanName=null;工厂方法名称=空;初始化方法名=空; destroyMethodName=null]

我该如何解决这个最重要的问题?

【问题讨论】:

有没有办法摆脱这些日志消息? 【参考方案1】:

我遇到了同样的错误。我的问题是我用@Service 标记了该类,然后在其中一个@Configuration 类中我创建了一个与该类同名的@Bean

【讨论】:

【参考方案2】:

我经历过类似的事情,我只是更改了课程的名称,并且效果很好。仍然无法弄清楚为什么。如果我理解得更好,我会更新。

但首先要更改 bean 的类名。

【讨论】:

【参考方案3】:

我遇到了类似的问题,我在 run maven -> 目标中使用dependency:analyze 解决了它。我在我的 pom 中发现了未使用的依赖项,我删除了未使用的依赖项。

注意:删除依赖项时要小心,因为dependency:analyze的结果不安全。

【讨论】:

【参考方案4】:

当 Spring 两次解析相同的 applicationContext.xml 时会发生这种情况。

当您在 WEB.xml 中有重复/覆盖 <context-param> 导入时,可能会发生这种情况。

要解决这个问题,只留下根 applicationContext.xml 并删除子项。

【讨论】:

【参考方案5】:

这不是错误,只是一个 [INFO] 并且是 Spring 所做的替换;您可以看到与“step”作用域 bean 类似的内容。 例如,如果你有一个 bean 标记为

<bean id="myBean" class="path.to.beanClass" scope="step" />

这将被名称为 scopedTarget.myBean 的 bean 替换。 查找StepScope 文档和来源

【讨论】:

由于这个重复的 bean 定义,服务器在少数情况下无法正常启动。它导致 bean 创建异常 - 请求的 bean 当前正在创建中:是否存在无法解析的循环引用? 参考:***.com/questions/10008714/… 这有两个原因:1.循环依赖 2.重复的 bean 定义仅供参考 @przodownikPracy

以上是关于覆盖 bean 'X' 的 bean 定义:替换 [Generic bean Y]的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2.1 bean 覆盖与 Primary

如何解决此 bean 定义覆盖?

动态替换Spring容器中的Bean

如何在不覆盖 Spring Boot 使用的情况下定义自定义 ObjectMapper bean

Spring Boot:@TestConfiguration 在集成测试期间不覆盖 Bean

BeanDefinitionRegistryPostProcessor自定义替换spring中的bean