请说明 @Qualifier 注解在 Spring 依赖注入中的功能与使用场景。
考察说明
考查对 Spring 依赖注入时按类型自动装配歧义处理机制的理解。
回答思路
- 【回答框架 1】@Qualifier 是 Spring 框架中用于限定候选 Bean 的注解,解决按类型注入时存在多个同类型 Bean 而导致的歧义问题。它通常与 @Autowired 配合使用,通过指定 Bean 名称缩小注入范围。
- 【回答框架 2】在 Spring 容器中,当存在多个相同类型的 Bean 时,@Autowired 默认按类型匹配会失败。@Qualifier 提供按名称限定的能力,其默认值即 Bean 的名称,也可以使用自定义的限定词。
- 【回答框架 3】@Qualifier 可标注在字段、构造器参数、方法参数上。标注在字段时直接指定要注入的 Bean 名;标注在构造器参数上时,与 @Autowired 构造器注入配合,解决参数歧义。
- 【回答框架 4】补充一点:@Qualifier 还可用于自定义注解的元注解,通过组合注解提供更语义化的限定标识。但要注意,它只解决 Bean 选择问题,不影响 Bean 的生命周期。
- 【关键点 1】@Qualifier 用于指定要注入的 Bean 名称,解决多个同类型 Bean 的歧义。
- 【关键点 2】通常与 @Autowired 搭配使用,也可用于方法参数和构造器参数。
- 【关键点 3】默认值即 Bean 名称,也可自定义限定词。
- 【易错点 1】不要错误认为 @Qualifier 能解决所有装配问题,它只是按名称限定,若名称仍不唯一需结合 @Primary 等。
- 【易错点 2】注意 @Qualifier 与 @Resource 的区别,@Resource 默认按名称,但 @Qualifier 必须显式指定。