resource(Autowire、Resource区别?最后一点你考虑过么?)
来源及默认装配方式区别:
(spring的注解)Autowire以type,只有required(是否不能为空),如果要指定名字,需要借助@Qualifer
(jdk的注解)Resource以name,可以指定name、type,如果没有指定,先name,后type,如果指定,只能按指定的加载,加载不到报错
以上两种,如果没有指定,会以属性名为准加载;
注入的是接口,接口有多个实现类时,必须指定注入的哪一个实现类
作用范围:
Autowire 构造器、setter方法、字段
Resource setter方法、字段
扩展问题:
1、如果一个属性,注解写了这俩,会以哪个为准?能不能调整顺序?
答:默认Autowire先,Resource后,可以使用排序器排序
2、Autowire只能以type类型加载么?
答:不是。
a、spring发现多个类型可以与之匹配(比如一个接口多个实现),spring会自动切换为按照name名称装配。(这里也是为什么没指定装配类型or名称,但是依然没有报错的原因)
b、通过@Qualifier("aa")注解指定名称