Spring6 探析之 @Primary 注解

发布时间 2023-07-14 11:22:33作者: acdongla

Spring6 探析之 @Primary 注解

介绍

使用 @Autowired 注入,如果存在多个相同类型的 bean,Spring 就会因为不知道使用哪一个 Bean 而报错,此时有两种解决方法:

  1. 在 @Autowired 上使用 @Qualified 指定类
  2. 使用 @Primary 设置主要类,@Autowired 会优先选择这个类

看看 @Primary 的源码吧:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Primary {

}

可以看到,@Primary 可以放在字段、方法上,并且没有任何参数

使用

为了模拟相同类型的效果,我们创建一个接口,两个类实现这个接口

image-20230714111316572

然后,创建配置类,同时配置这两个相同的类

image-20230714111407636

测试一下看看:

image-20230714111435422

如果配置类里没有 @Primary 注解,Spring 就会因为不知道要加载哪个实例而报错哦