当前位置:数据分析 > 五个维度,解析 Spring 中 @Autowired 和 @Resource 的区别

五个维度,解析 Spring 中 @Autowired 和 @Resource 的区别

  • 发布:2023-09-28 08:25

@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能够支持对象类型注入,也能够支持对象名称注入。

相关文章