您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Spring中的@Autowired和@Resource注解怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Spring中的@Autowired和@Resource注解怎么使用”吧!
@Resource和@Autowired是Spring Framework中兩種常用的注入方式,它們的作用是在Spring容器中自動裝配Bean對象.
@Autowired是Spring Framework提供的注解,它也可以實現(xiàn)自動裝配Bean對象.
@RestController public class DemoController { /** * 下面兩種@Autowired使用一種即可 */ @Autowired DemoService demoService; @Autowired public void setDemoService(DemoService demoService) { this.demoService = demoService; } }
@Autowired注解按照類型(byType)裝配依賴對象,默認(rèn)情況下它要求依賴對象必須存在,如果允許null值,可以設(shè)置它的required屬性為false.如果我們想使用按照名稱(byName)來裝配,可以結(jié)合@Qualififier注解一起使用.如下:
@RestController public class DemoController { @Autowired @Qualifier(value = "demoService") DemoService demoService; }
如果存在多個同類型的Bean對象,可以使用@Primary來指定一個默認(rèn)的Bean對象,如下:
@RestController public class DemoController { @Autowired DemoService demoService; } public interface DemoService {} @Service @Primary public class DemoServiceImpl implements DemoService {} @Service public class DemoServiceImpl1 implements DemoService {}
@Resource默認(rèn)按照byName自動注入,由JavaEE5提供.@Resource有兩個重要的屬性:name和type,而Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型,所以,如果要使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略.如果即不指定name也不指定type,這時將通過反射機(jī)制使用byName自動注入策略.
@RestController public class DemoController { /** * 下面兩種@Resource使用一種即可 */ @Resource DemoService demoService; @Resource public void setDemoService(DemoService demoService) { this.demoService = demoService; } }
@Resource裝配順序:
如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進(jìn)行裝配,找不到則拋異常
如果指定了name,則從上下文中查找名稱匹配的bean進(jìn)行裝配,找不到則拋異常
如果指定了type,則從上下文中找到類型匹配的唯一bean進(jìn)行裝配,找不到或找到多個,都會拋異常
如果即沒有指定type,也沒指定name,則自動按照byName方式進(jìn)行裝配,如果匹配則自動裝配.如果沒有匹配,則回退為一個原始類型進(jìn)行匹配.
區(qū)別
@Resource默認(rèn)按名稱進(jìn)行匹配,@Autowired默認(rèn)按照類型進(jìn)行匹配,但可以通過@Qualifier注解指定名稱進(jìn)行匹配
@Resource可以用在字段,setter方法和構(gòu)造函數(shù)上,@Autowired可以用在字段,setter方法,構(gòu)造函數(shù)和方法上
@Resource不支持@Primary注解,@Autowired支持
@Resource是JavaEE5提供的注解,而@Autowired是Spring Framework提供的注解
根據(jù)以上區(qū)別,我們可以根據(jù)具體情況選擇使用@Resource或@Autowired.如果希望按照名稱進(jìn)行匹配,并且不需要支持@Primary注解,可以選擇@Resource;如果希望按照類型進(jìn)行匹配,并且需要支持@Primary注解,可以選擇@Autowried.根據(jù)具體情況選擇合適的注解來實現(xiàn)自動裝配
到此,相信大家對“Spring中的@Autowired和@Resource注解怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。