首页 > 解决方案 > Java Spring 依赖注入创建了两个 bean,而应该只有一个

问题描述

我想让我们的应用程序使用 Springs 依赖注入。出于某种原因,某些类会被实例化两次,这会导致 org.springframework.beans.factory.NoUniqueBeanDefinitionException。一个 Bean 的 ID 只是简单的类名,另一个是全名,以 #0 结尾:

上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建文件 [W:\Projekte\ocp-ospe\ServiceGruppe\osplus.ocp.service.impl 中定义的名称为“FDDConnectionFactory”的 bean 时出错\target\classes\osplus\dynssee\ie\ocp\bs\services\fdd\FDDConnectionFactory.class]:通过构造函数参数0表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有 'osplus.dynssee.ie.ocp.bs.services.fdd.FDDParameterResolver' 类型的合格 bean 可用:预期单个匹配 bean 但找到 2:FDDDefaultParameterResolver,osplus.dynssee .ie.ocp.bs.services.fdd.FDDDefaultParameterResolver#0

@Component
public class FDDDefaultParameterResolver implements FDDParameterResolver {
    private FremdsystemProviderProvider fremdsystemProviderProvider;
    
    @Autowired
    public FDDDefaultParameterResolver(FremdsystemProviderProvider fPP) {
        this.fremdsystemProviderProvider = fPP;
    }
    
    // Some methods
}

@Component
public class FDDConnectionFactory {
    @Autowired
    public FDDConnectionFactory(FDDParameterResolver fddParams) {
        this.fddParams = fddParams;
    }
}

正如您在上面看到的,我将课程减少到最低限度。但奇怪的是,我无法重新创建另一个表现出相同行为的最小示例。有些注射只是有效,有些则无效。有人知道是什么导致了这种奇怪的行为吗?

标签: javaspringspring-bootdependency-injectionautowired

解决方案


似乎这些问题与我公司的框架有关,他们已经在特定包上执行了某种组件扫描。


推荐阅读