Spring6 探析之 @Primary 注解
Spring6 探析之 @Primary 注解
介绍
使用 @Autowired 注入,如果存在多个相同类型的 bean,Spring 就会因为不知道使用哪一个 Bean 而报错,此时有两种解决方法:
- 在 @Autowired 上使用 @Qualified 指定类
- 使用 @Primary 设置主要类,@Autowired 会优先选择这个类
看看 @Primary 的源码吧:
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Primary {
}
可以看到,@Primary 可以放在字段、方法上,并且没有任何参数
使用
为了模拟相同类型的效果,我们创建一个接口,两个类实现这个接口
然后,创建配置类,同时配置这两个相同的类
测试一下看看:
如果配置类里没有 @Primary 注解,Spring 就会因为不知道要加载哪个实例而报错哦