标签:
首先@resource的范围比@autoWire的大
如果@autoWire是在setter方法上标注的话,默认是按照参数名称而不是setter后面的属性名称进行注入,如果没有这个参数名称的话就按byType,以下是按tx1参数名称注入
public void setTx2(TxInterface tx1) {this.tx2 = tx1;}
如果autoWire标注在字段上面,则直接使用字段名称。进行查找,如
@autowire private String username;
如果是按照@resource标注的话先会根据name进行匹配,如果匹配不到在退化成byType
值得注意的是,如果在使用resource时,根据resource的name找到了bean,但该bean并不是所需要的bean类型,则就要报类型不 匹配错误了。即spring在查找时,并没有保证类型判断,即你配置一个name的tx2的bean,但该类型即为TxInterface2而不是 TxInterface,则spring在后期直接报异常,而不会fallback了。但Autowired注解则不会产生这种情况,因为它只会从满足 type的情况中的bean中查找
标签:
原文地址:http://www.cnblogs.com/2027437606qq/p/5038394.html