這篇文章主要介紹“java中@Resource,@Autowired,@Inject3種注入方式詳解”,在日常操作中,相信很多人在java中@Resource,@Autowired,@Inject3種注入方式詳解問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”java中@Resource,@Autowired,@Inject3種注入方式詳解”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
廣信網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,廣信網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為廣信上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的廣信做網(wǎng)站的公司定做!
概況
@Resource,@Autowired,@Inject 這3種都是用來(lái)注入bean的,它們屬于不同的程序中。
ANNOTATION | PACKAGE | SOURCE |
---|---|---|
@Resource | javax.annotation | Java JSR-250 |
@Inject | javax.inject | Java JSR-330 |
@Autowired | org.springframework.bean.factory | Spring 2.5+ |
JSR是Java Specification Requests的縮寫(xiě),意思是Java 規(guī)范提案。是指向JCP(Java Community Process)提出新增一個(gè)標(biāo)準(zhǔn)化技術(shù)規(guī)范的正式請(qǐng)求。任何人都可以提交JSR,以向Java平臺(tái)增添新的API和服務(wù)。JSR已成為Java界的一個(gè)重要標(biāo)準(zhǔn)。
區(qū)別
@Resource
它有兩個(gè)關(guān)鍵的屬性:name-名稱,type-類型
1、如果指定了name,type,則從Spring容器中找一個(gè)名稱和類型相當(dāng)應(yīng)的一個(gè)bean,找不到則報(bào)錯(cuò)。
2、如果只指定了name,則從Spring容器中找一個(gè)名稱和name一樣的bean,找不到則報(bào)錯(cuò)。
3、如果只指定了type,則從Spring容器中找一個(gè)類型和type一樣的bean,找不到或者找到多個(gè)則報(bào)錯(cuò)。
4、如果沒(méi)有指定參數(shù),則默認(rèn)找字段名稱裝配,找不到則按類型裝配,找不到則報(bào)錯(cuò)。
@Autowired
默認(rèn)按類型裝配,找不到或者找到多個(gè)則報(bào)錯(cuò)。
如果要按名稱裝配,需要結(jié)合Spring另外一個(gè)注解Qualifier("name")使用。
默認(rèn)必須裝配requred=true,如果可以為空,可以設(shè)置為false,在Spring4+結(jié)合jdk8+的情況下還可以使用Optional和false同等的效果,如
@Autowired
private Optional
@Inject
和@Autowired類似,可以完全代替@Autowired,但這個(gè)沒(méi)有required屬性,要求bean必須存在。
如果要按名稱裝配,需要結(jié)合javax另外一個(gè)注解N("name")使用。
到此,關(guān)于“java中@Resource,@Autowired,@Inject3種注入方式詳解”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!