Spring @Qualifier是否期望bean ID作为元素值? Spring @Qualifier的元素bean ID是否在幕后?

时间:2019-04-23 09:10:10

标签: java spring spring-boot spring-mvc dependency-injection

我有意识地使用了@Qualifier和它的见解,通过故意破坏了连线逻辑,bean ID,候选bean,复制了限定符等。

我想知道:@Qualifier实际上是bean ID指定符吗?还是 Alias (除了bean的默认ID之外)? @Qualifier中的Documentation并没有就其元素/属性与bean ID的关系说太多或其他任何内容,但是:

有一些行为,对我来说似乎很有趣:

如果我有多个@Component类实现一个interface A {..},并且:

  1. 如果我提供其中一个具有自定义ID的组件,例如@Component("myId"),然后如果我尝试使用@Autowired @Qualifier("myId")将这个bean注入其他地方,则一切都会正常工作-这意味着特定的合格bean通过其ID进行区分和标识;
    (我假设@Component的元素(“ myId”)是bean ID,尽管official documentation我对@Component的 可选元素摘要 一无所知)
  2. 另一方面,如果我为@Component @Qualifier("myId")提供相同的组件,而其余方案都是相同的-一切仍然可以很好地工作。

但是!,我观察到的有趣的部分是@Component("X")将相应的bean的ID设置为X,而@Qualifier("Y")没有设置相应的bean Bean的ID为X

如果@Qualifier类似于别名,那么如果要注入的字段具有@Qualifier("name")来满足狭窄的条件,但是有两个bean可用,一个ID为name,另一个带有Qualifier name,将被注入?

任何人都会对这一切的工作方式有所了解吗?

0 个答案:

没有答案