相同点
- 两者都是Bean注入时使用
- 标注在属性或者setter方法上
不同点
- @Resource是javax.annotation.Resource包下,@Autowired是Spring的注解
- @Resource默认按照ByName自动注入,@Autowired默认按照ByType自动注入
@Resource装配顺序
- 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
- 如果指定了name,则从上下文中查找名称匹配的bean进行装配,找不到则抛出异常
- 如果指定了type,从上下文中找到类似匹配的唯一bean进行装配,如果找到多个或者找不到,都会抛出异常
- 如果都没有指定,默认按照ByName的方式进行装配,如果没有匹配,回退为一个原始类型进行匹配,如果匹配则自动装配。
- @Resource与@Autowired作用相当,只不过默认装配方式不同