Bootstrap

分析@Resource和@Autowired注解区别

这篇文章主要为大家介绍了深入分析@Resource和@Autowired注解区别,有需要的朋友可以借鉴参考下,希望能够有所帮助

引言

@Resource和@Autowired都是Spring Framework中用于依赖注入的注解,但它们有几点不同:

来源不同:@Resource注解来自于J2EE规范中;而@Autowired注解是Spring框架提供的。

搜索策略不同:@Resource注解默认按照名称进行匹配查找,如果找不到,则按照类型进行匹配。而@Autowired注解默认是按照类型进行匹配,如果出现多个类型一致的实例对象,则需要指定名称。

属性不同:@Resource注解没有属性名称,只有一个name属性,表示要注入的Bean名称。而@Autowired注解有两个重要属性:required和name,其中required属性表示是否必须注入该属性,默认为true;name属性表示要注入的Bean名称。

1、用法层面分析

首先,我们创建一个接口UserService和两个实现类UserServiceImpl1UserServiceImpl2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

public interface UserService {

    void save();

}

@Service

public class UserServiceImpl1 implements UserService {

    @Override

    public void save() {

        System.out.println("UserServiceImpl1 save");

    }

}

@Service

public class UserServiceImpl2 implements UserService {

    @Override

    publi

;