在spring

时间:2018-02-23 05:55:06

标签: spring

从标题来看,这似乎很简单,我们在我们的应用程序中使用@qualify和@autowired在我们的代码中注入bean。

我有两个带有@component注释的类,它们都实现了相同的类。

@Component
class A extends B{  
}

@Component
class C extends B{  
}

当应用程序在启动应用程序时作为两个相同类型的bean启动时,应用程序将失败并显示以下错误

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'JI' available: expected single matching bean but found 2: a,b

问题是因为弹簧注入不注入这些bean我想告诉spring通过bean名称注入这些bean而不是类型运行时。

当第一个请求出现时,应用程序启动很好,但是给出了错误。

我在下面尝试了这个 -

@Component
@Qualifier("a")
class A extends B{  
}

@Component
@Qualifier("c")
class C extends B{  
}

但仍然会得到同样的错误。

有关如何使此工作正常的任何建议。

1 个答案:

答案 0 :(得分:0)

注入时必须使用bean的名称。

   @Autowired
   @Qualifier("c") // or "a"
   private TargetClass targetClass;