前言
当一个接口有多个实现时,我们可以通过给@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 {
//...
}
复制代码
近期评论