所以,如果我理解正确的话,如果有多个候选者,两者都是确定要 Autowiring 哪个 bean 的方法。那么到底有什么区别呢?
最佳答案
阅读 @Primary
作为“默认”。
如果一个bean有@Autowired
没有任何@Qualifier
,并且存在多个该类型的bean,候选bean标记为 @Primary
将被选中,即当没有其他信息可用时,即当 @Qualifier
缺失时,它是默认选择。
一个很好的用例是,最初您只有一个该类型的 bean,因此没有使用 @Qualifier
的代码。然后,当您添加另一个 bean 时,您还会将 @Qualifier
添加到旧 bean 和新 bean,因此任何 @Autowired
都可以选择它想要的。通过将 @Primary
添加到旧的原始 bean,您不必将 @Qualifier
添加到所有现有的 @Autowired
。可以这么说,他们是“祖父”。
@Primary
也很好,例如95% 的 @Autowired
想要一个特定的 bean。这样,只有想要其他 bean 的 @Autowired
需要指定 @Qualifier
。这样,您就有了所有 Autowiring 所需的主要 bean,并且 @Qualifier
仅用于请求“替代”bean。
关于java - @Primary 与带有 @Qualifier 注释的 @Autowired 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48447779/