@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。