@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注解,代码如下:
public class Service {
@Resource(name = "service1")
private Service service1;
@Resource(name = "service2")
private Service service2;
@Reource
private Service service3;
@Reource
private Service service4;
}
它是由JDK提供的,遵循JSR-250规范,是JDK 1.6及以上加入的新特性。作为java的标准,它的作用和@Autowired无区别。与@Autowired不同的是,它适用于所有的Java框架,而@Autowired只适用于Spring。读者可以简单地理解为,@Resource能够支持对象类型注入,也能够支持对象名称注入。