java - Spring @Qualifier 是否期望 bean ID 作为元素值?Spring @Qualifier 的元素 bean ID 是在幕后吗?
问题描述
@Qualifier("identifier")
的元素值是为细粒度选择指定候选 bean 的 ID,还是指定其他内容(例如别名)?
关于其元素与候选 bean ID 的关系,文档@Qualifier
并没有真正说明这一点或其他任何内容。但是,有一些有趣的行为:
如果我有几个@Component
类实现一个interface A
,并且:
- 如果我使用自定义 ID 定义其中一个组件,
@Component("identifier")
例如ID(我假设的 value 元素是一个 bean ID,虽然@Component 的Optional Element Summary的官方文档相当缺乏);identifier
@Autowired @Qualifier("identifier")
@Component
- 另一方面,如果我定义相同的组件
@Component @Qualifier("identifier")
并且场景的其余部分相同 - 一切仍然可以很好地工作。
然而!,我观察到的有趣部分是@Component("identifier")
将相应 bean 的 ID 设置为,identifier
而@Qualifier("identifier")
没有将相应 bean 的 ID 设置为identifier
.
如果@Qualifier
是类似于别名的东西,如果要注入的字段具有@Qualifier("identifier")
狭窄的标准,但有两个候选 bean 可用于注入,一个带有 IDidentifier
另一个带有 Qualifier identifier
,哪一个将优先注入?
任何人都会对这一切如何运作有所了解?
解决方案
推荐阅读
- hyperledger-fabric-ca - Hyperledger Fabric CA:x509:证书对 rca-ord 有效,而不是 localhost
- c# - C#中的Android蓝牙扫描仪
- java - TableView JavaFx 中的字符串返回内存地址而不是 ObserveList 中的值
- python - Python - 一致的标签
- java - 学习Java 8
- python - 编译 Python 程序以进行分发
- java - 将用户输入多次存储在数组中
- php - 如何使 .htaccess 严格接受参数
- recursion - 在 F# 中创建随机数时如何避免特定数字?
- mysql - 在没有主机的情况下将 mysql 凭据存储在 my.cnf 中