@Autowired 是Spring框架自帶的注解,而@Resource 是javax.annotation 包下的注解。
@Autowired 是根據(jù)類型進(jìn)行自動(dòng)裝配,如果存在多個(gè)類型相同的Bean,則會(huì)報(bào)錯(cuò);而@Resource 是根據(jù)名稱進(jìn)行自動(dòng)裝配,如果存在多個(gè)相同名稱的Bean,則會(huì)使用@Qualifier 指定具體使用哪個(gè)Bean。
@Autowired 可以用在構(gòu)造方法、屬性和方法上,而@Resource 只能用在屬性上。
@Autowired 是Spring提供的,支持byType自動(dòng)裝配,可以不用顯示的寫 @Autowired,Spring會(huì)自動(dòng)尋找到與目標(biāo)bean類型相同的bean進(jìn)行裝配。而@Resource 是J2EE提供的,只支持byName自動(dòng)裝配,并且需要顯示的寫明需要裝配的bean的名稱。
總的來說,@Autowired 更加靈活,而@Resource 更加強(qiáng)制性,推薦優(yōu)先使用@Autowired。