首页 > 解决方案 > Spring @Qualifier 是否期望 bean ID 作为元素值?Spring @Qualifier 的元素 bean ID 是在幕后吗?

问题描述

@Qualifier("identifier")元素值是为细粒度选择指定候选 bean 的 ID,还是指定其他内容(例如别名)?

关于其元素与候选 bean ID 的关系,文档@Qualifier并没有真正说明这一点或其他任何内容。但是,有一些有趣的行为:

如果我有几个@Component类实现一个interface A,并且:

  1. 如果我使用自定义 ID 定义其中一个组件@Component("identifier")例如ID(我假设的 value 元素是一个 bean ID,虽然@Component 的Optional Element Summary的官方文档相当缺乏);identifier@Autowired @Qualifier("identifier")@Component
  2. 另一方面,如果我定义相同的组件@Component @Qualifier("identifier")并且场景的其余部分相同 - 一切仍然可以很好地工作。

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

如果@Qualifier是类似于别名的东西,如果要注入的字段具有@Qualifier("identifier")狭窄的标准,但有两个候选 bean 可用于注入,一个带有 IDidentifier另一个带有 Qualifier identifier,哪一个将优先注入?

任何人都会对这一切如何运作有所了解?

标签: javaspringspring-bootspring-mvcdependency-injection

解决方案


推荐阅读