覆盖 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
如何在不覆盖 Spring Boot 使用的情况下定义自定义 ObjectMapper bean