欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于@Autowierd && @Resource 你真的了解嗎

 更新時(shí)間:2021年08月14日 11:03:36   作者:采坑先鋒  
這篇文章主要介紹了關(guān)于@Autowierd && @Resource的具體使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

關(guān)于@Autowierd && @Resource 你真的了解嗎

1.@Autowierd

使用byType注入,默認(rèn)情況下要求依賴必須存在;配置required=false表示依賴可為null

下面代碼第一個(gè)注入是會(huì)報(bào)錯(cuò)的,編輯器是會(huì)有紅色提示。

因?yàn)榇a中沒有這樣的bean,截圖也能看的出來。

    @Autowired
    private Data data;   //報(bào)錯(cuò)
    @Autowired(required = false) //沒事
    private Data data2;

找不到報(bào)錯(cuò)

2.@Resource

按照ByName自動(dòng)注入,@Resource有兩個(gè)重要的屬性:nametype,而Spring將@Resource注解的 name屬性解析為bean的名字,而type屬性則解析為bean的類型。

所以,如果使用name屬性,則使用byName的自動(dòng)注入策略,而使用type屬性時(shí)則使用byType自動(dòng)注入策略。

如果既不制定name也不制定type屬性,這時(shí)將通過反射機(jī)制使用byName自動(dòng)注入策略。

2.1@Resource具體裝配順序,即指定的注入實(shí)例的策略

①如果同時(shí)指定了name和type,則從Spring上下文中找到唯一匹配的bean進(jìn)行裝配,找不到則拋出異常。

②如果指定了name,則從上下文中查找名稱(id)匹配的bean進(jìn)行裝配,找不到則拋出異常。

③如果指定了type,則從上下文中找到類似匹配的唯一bean進(jìn)行裝配,找不到或是找到多個(gè),都會(huì)拋出異常。

④如果既沒有指定name,又沒有指定type,則自動(dòng)按照byName方式進(jìn)行裝配;如果沒有匹配,則回退為一個(gè)原始類型進(jìn)行匹配,如果匹配則自動(dòng)裝配(即按照byType的方式)

3.注意

如果是接口或者抽象類的話那么需要實(shí)現(xiàn)類唯一,否則創(chuàng)建實(shí)例出錯(cuò),或者說當(dāng)接口或抽象類有n多個(gè)實(shí)現(xiàn)類(繼承類)時(shí),在注入的必須指定此時(shí)要注入的實(shí)現(xiàn)類(繼承類)。

找到兩個(gè)實(shí)現(xiàn)類,報(bào)錯(cuò)!?。?/strong>

3.1 @Autowierd解決

@Autowierd需要借助@Qualifier來幫助區(qū)分使用具體的哪個(gè)實(shí)現(xiàn)類

    @Autowired
    @Qualifier("userServiceImpl")
    private UserService userService;

3.2 @Resource解決

@Resource 可以使用name屬性或者是type屬性來指定想要注入的實(shí)現(xiàn)類。

    @Resource(name = "userServiceImpl2")
    private UserService userService1;
    @Resource(type = UserServiceImpl.class)
    private UserService userService3;

4.高級(jí)用法

@Autowierd 注入抽象類時(shí),當(dāng)抽象類有多個(gè)繼承類,可以使用

@Autowierd List<抽象類> ll;//來獲取所有的子類實(shí)現(xiàn)集合

	@Autowired
    private List<UserService> userServices;

小結(jié):

  • @Autowierd & @Resource 功能相當(dāng),都可以注入實(shí)例
  • @Autowierd 通過byType的方式注入
  • @Resource 優(yōu)先使用byName的方式注入,然后使用@Autowire的方式注入

這就是為什么mybatis自動(dòng)生成的Mapper文件,你使用@Resouce Idea不會(huì)提示紅色下劃線(其實(shí)在dao文件的已經(jīng)被掃描了,但是ieda在編輯的時(shí)候找不到,但是在運(yùn)行中是能夠找到的)

1.dao層配置

2.mybatis自動(dòng)生成Mapper文件

3具體情況:一看便知

看著報(bào)錯(cuò),其實(shí)不會(huì)有錯(cuò),以為在2中已配置包掃描了。

@Autowired
    private TCommentInfoMapper tCommentInfoMapper;
    
    @Resource
    private TCommentInfoMapper tCommentInfoMapper2;

@Autowire和@Resource注解對(duì)比

在我看來@Autowire和@Resource有兩個(gè)區(qū)別:

一、@Resource是J2EE提供的,@Autowire是Spring提供的

二、兩個(gè)注解使用name區(qū)別注入的寫法不同

三、然后就沒有什么不同了

網(wǎng)上很多人專門介紹@Resource能夠用變量名或set方法里的變量名作為對(duì)象name來使用,說的好像@Autowire就不能似的.

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java多線程編程實(shí)現(xiàn)下雪效果

    java多線程編程實(shí)現(xiàn)下雪效果

    這篇文章主要介紹了java多線程編程實(shí)現(xiàn)下雪效果的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • 詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換

    詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換

    這篇文章主要介紹了詳解PowerDesigner之CDM、PDM、SQL之間轉(zhuǎn)換的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • ElasticSearch學(xué)習(xí)之Es集群Api操作示例

    ElasticSearch學(xué)習(xí)之Es集群Api操作示例

    這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之Es集群Api操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Java Vector實(shí)現(xiàn)班級(jí)信息管理系統(tǒng)

    Java Vector實(shí)現(xiàn)班級(jí)信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java Vector實(shí)現(xiàn)班級(jí)信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java快速實(shí)現(xiàn)圖書管理基本功能

    Java快速實(shí)現(xiàn)圖書管理基本功能

    隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對(duì)圖書館的日常工作進(jìn)行管理勢(shì)在必行,本篇文章涵蓋一個(gè)圖書管理系統(tǒng)的基本功能實(shí)現(xiàn)代碼,大家可以查缺補(bǔ)漏,提升水平
    2022-05-05
  • Java面向?qū)ο笾b類的用途與實(shí)際使用

    Java面向?qū)ο笾b類的用途與實(shí)際使用

    所謂包裝類,就是能夠直接將簡單類型的變量表示為一個(gè)類,在執(zhí)行變量類型的相互轉(zhuǎn)換時(shí),我們會(huì)大量使用這些包裝類,本文我們來深入探索一下Java包裝類的相關(guān)內(nèi)容,需要的朋友可以參考下
    2022-03-03
  • java GUI界面初步入門示例【AWT包】

    java GUI界面初步入門示例【AWT包】

    這篇文章主要介紹了java GUI界面,結(jié)合簡單實(shí)例形式分析了java使用AWT包進(jìn)行圖形界面操作相關(guān)使用技巧,需要的朋友可以參考下
    2020-01-01
  • java ExecutorService使用方法詳解

    java ExecutorService使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了java ExecutorService使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Mybatis Plus 代碼生成器的實(shí)現(xiàn)

    Mybatis Plus 代碼生成器的實(shí)現(xiàn)

    這篇文章主要介紹了Mybatis Plus 代碼生成器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • docusaurus如何添加一個(gè)搜索功能

    docusaurus如何添加一個(gè)搜索功能

    這篇文章主要介紹了docusaurus如何添加一個(gè)搜索功能,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04

最新評(píng)論