文章目录
- 一、@Autowired
- 二、@Resource
- 三、@Autowired和@Resource的区别:
一、@Autowired
@Autowired 这个注解呢,是由 Spring 提供的,它可以用来对构造方法、成员变量以及方法参数上进行标注,能够根据对象类型完成自动注入。
public class Service {
//构造方法注入
@Autowired
public Service (Service service) {
this.service = service;
}
//成员变量注入
@Autowired
private Service service;
//方法参数注入
@Autowired
public void setService (Service service)
{this.service = service;
}
}
二、@Resource
它是由 JDK 提供的,遵循 JSR-250 规范,是 JDK1.6 及以上加入的新特性。作为 Java 的标准,它的作用和@Autowired无区别。与@Autowired 不同的是它可以适用于所有的 Java框架,而@Autowired 只适用于 Spring。简单的理解@Resource能够支持对象类型注入,也能够支持对象名称注入。
三、@Autowired和@Resource的区别:
1、@Resource是JDK原生的注解,@Autowired是Spring2.5 引入的注解
2、@Resource有两个属性name和type。Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
@Autowired只根据type进行注入,不会去匹配name。如果涉及到type无法辨别注入对象时,那需要依赖@Qualifier或@Primary注解一起来修饰。