当前位置: 首页 > 面试题库 >

@Primary与@Autowired和@Qualifier批注之间的区别

邬朗
2023-03-14
问题内容

因此,如果我理解正确的话,两种方法都是在有多个候选对象的情况下确定要自动装配哪个bean的方法。那么到底有什么区别呢?


问题答案:

读取@Primary为“默认”。

如果一个Bean @Autowired 没有 任何Bean
@Qualifier,并且存在多个该类型的Bean,@Primary则将选择标记的候选Bean
,即,当没有其他可用信息(即@Qualifier丢失)时,它是默认选择。

一个好的用例是,最初您只有一个类型的bean,因此没有使用任何代码@Qualifier。然后,当您添加另一个bean时,您还将同时添加@Qualifier到旧bean和新bean中,因此任何人@Autowired都可以选择所需的bean
。通过添加@Primary到旧的原始bean中,您不必添加@Qualifier到所有现有的bean中@Autowired。可以这么说,他们是“祖父”。

@Primary如果例如95%的人@Autowired想要一个特定的豆,那也是很好的。这样,只有@Autowired想要其他bean的才需要指定@Qualifier。这样,您将拥有所有自动装配的主bean,并且@Qualifier仅用于请求“备用”
bean。



 类似资料:
  • 问题内容: 我看不到两种方式之间的任何区别,@ Qualifier 始终与 @Autowired一起使用 。 VS 有人能让我知道其中的区别吗?谢谢! 问题答案: 可以单独使用。如果单独使用,将按类型进行接线。因此,如果在容器中声明了多个相同类型的bean,而又不知道要注入哪个bean,就会出现问题。结果,通过指定Bean名称(按名称进行绑定),与一起使用来阐明要实际连接的Bean 也按名称接线。

  • 问题内容: 为表定义模式之间和之间有什么区别 吗?当使用int主键时,我得到了 东西 。当整数主键,我得到表生成。有什么不同?第一个和第二个变体会产生哪些副作用? 问题答案: 更新:SQLite的ROWID列现在是64位整数: 在SQLite中,类型为INTEGER PRIMARY KEY的列是ROWID的别名(在WITHOUT ROWID表中除外),该别名始终是64位有符号整数。 所有这些都在S

  • 问题内容: 是否通过@Autowired自动检测到?使用@Qualifier时是否按名称进行依赖项注入?我们如何使用这些批注进行setter和构造函数注入? 问题答案: 你可以与一起使用。实际上,如果发现模棱两可的bean类型,spring会询问你是否明确选择了bean,在这种情况下,你应该提供限定符 例如在以下情况下,有必要提供一个限定词 编辑: 在Lombok 1.18.4中,最终可以避免使用

  • 问题内容: 为什么在这种情况下不能使用? 但可以使用 生成同一事物的两种方式不是吗? 问题答案: 并做两件事。此处的其他答案将更详细地解释,但更为简单: 告诉Spring’这是此类的一个实例,请保留该类,并在我询问时将其还给我’。 说“请给我一个该类的实例,例如,我@Bean之前用注释创建的一个实例”。 那有意义吗?在第一个示例中,你要让Spring给你一个的实例,但是你从未创建一个实例,因此Sp

  • 本文向大家介绍@Inject和@Autowired之间的区别,包括了@Inject和@Autowired之间的区别的使用技巧和注意事项,需要的朋友参考一下 @Inject和@Autowired这两个注释都用于在应用程序中自动装配。 @Inject批注是Java 6中引入的Java CDI的一部分,而@Autowire批注是spring框架的一部分。因此,两个注释都实现相同的目的,我们可以在应用程序

  • 是否使用@autowired自动检测?使用@qualifier时是否按名称进行依赖注入?我们如何使用这些注释进行setter和constructor注入?