Spring Boot注解全攻略(六):@Primary

3,926 阅读1分钟

前言

当一个接口有多个实现时,我们可以通过给@Autowired注解搭配@Qualifier来注入我们想要的Bean。这里还有另一种情况:Bean之前分优先级顺序,一般情况下我们只会注入默认实现;这个时候可以采用@Primary注解,该注解标注于Bean上,指示了优先注入的类。

源码

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

使用

使用时直接标注在返回Bean的方法上

...
@Autowired
private MyBean myBean(); // 注入myBean1

@Primary
@Bean
public MyBean myBean1() {
    return new MyBean();
}

@Bean
public MyBean myBean2() {
    return new MyBean();
}
...

也可以标注在@Component的类上(@Controller, @Service, @Repository也是一样的)

@Primary
@Component
public class MyBean {
    //...
}