@Autowired实现依赖注入,注入对应类型的bean。当相同类型的bean有多个时,根据属性名与beanName进行匹配注入。@Autowired注入时默认必须对应类型的bean,如果不确定bean是否存在,可以标注属性require为false。@Autowired(required = false)
@Qualifier配合@Autowired使用,声明beanName,同类型多个bean时确定注入bean。
@Primary多个相同类型bean时,指定默认使用的bean。
示例如下:
/* Animal类型的bean只有一个时 */
//注入animal bean
@Autowired
private Animal animal;
/* Animal类型的bean有多个时,包含cat、dog */
//注入dog bean
@Autowired
private Animal dog;
//注入cat bean
@Autowired
@Qualifier("cat")
private Animal animal;
//注入dog bean
@Autowired
private Animal animal;
//Dog 类
@Service
@Primary
public class Dog implements Animal {
}
@Autowired也可以用于方法注入或者参数注入,用于方法上时,生成bean实例后,@Autowired标注的方法会自动执行。
@Autowired
@Override
public void setAnimal(Animal animal) {
System.out.println("执行方法");
this.animal = animal;
}
public BusinessPerson(@Autowired @Qualifier("cat") Animal animal){
this.animal = animal;
}
参考资料:深入浅出SpringBoot2.x