@Autowired 是Spring框架自带的注解,而@Resource 是javax.annotation 包下的注解。
@Autowired 是根据类型进行自动装配,如果存在多个类型相同的Bean,则会报错;而@Resource 是根据名称进行自动装配,如果存在多个相同名称的Bean,则会使用@Qualifier 指定具体使用哪个Bean。
@Autowired 可以用在构造方法、属性和方法上,而@Resource 只能用在属性上。
@Autowired 是Spring提供的,支持byType自动装配,可以不用显示的写 @Autowired,Spring会自动寻找到与目标bean类型相同的bean进行装配。而@Resource 是J2EE提供的,只支持byName自动装配,并且需要显示的写明需要装配的bean的名称。
总的来说,@Autowired 更加灵活,而@Resource 更加强制性,推荐优先使用@Autowired。