java - @Primary 与带有 @Qualifier 注释的 @Autowired 之间的区别

标签 java spring annotations

所以,如果我理解正确的话,如果有多个候选者,两者都是确定要 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/

相关文章:

java - 是否有用于在 Eclipse 中为 Java 枚举生成 switch 语句的模板或其他东西?

java - 将 .txt 文件读入 JAR。它可以在 Eclipse 中运行,但不能在导出的 JAR 中运行

java - Spring Security 登录返回 404

hibernate - 是否可以从 Hibernate 注释类生成 hbm xmls?

latex - PDF文件中的数学注释

java - Selenium WebDriver - 单击“保存”按钮后应用程序变得无响应

java - 执行两个或多个算法的策略模式

java - 在 jhipster 项目中正确配置我的 smtp 设置

java - MongoDB 的实体预填充以避免使用 Spring 进行填充

java - hibernate:父级的子ID检索列表