@Autowired 是Spring提供的,@Resource 是J2EE提供的。


1、装配时默认类型不同

@Autowired只按type装配,@Resource默认是按name装配。

2、使用区别

(1)@Autowired与@Resource都可以用来装配bean,都可以写在字段或setter方法上

(2)@Autowired默认按类型装配,默认情况下必须要求依赖对象存在,如果要允许null值,可以设置它的required属性为false。如果想使用名称装配可以结合@Qualifier注解进行使用。

(3)@Resource,默认按照名称进行装配。

@Resource装配顺序:
(1)如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
(2)如果仅指定了name,则从Spring上下文中查找名称(name)匹配的bean进行装配,找不到则抛出异常
(3)如果仅指定了type,则从Spring上下文中找到类型匹配的唯一bean进行装配,找不到或找到多个,都抛出异常
(4)如果既没指定name,也没指定type,则首先按照byName方式进行装配,如果没有找到,则回退为按类型进行匹配,如果匹配则自动装配。

@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入。