最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

@Resource和@Autowired兩個(gè)注解的區(qū)別及說明

 更新時(shí)間:2024年06月11日 15:47:21   作者:有WiFi就好說  
這篇文章主要介紹了@Resource和@Autowired兩個(gè)注解的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

回答

首先這@Resource @Autowired這兩個(gè)注解都是Spring生態(tài)里去實(shí)現(xiàn)Bean的依賴注入(在springmvc項(xiàng)目和springboot項(xiàng)目中都可以使用)

下面我在說一下這個(gè)注解的區(qū)別

1.@Autowired

@AutowiredSpring里面提供的一個(gè)注解,它默認(rèn)是根據(jù)類型來實(shí)現(xiàn)Bean的依賴注入;

@Autowired里面有一個(gè)required屬性,默認(rèn)值是true 表示強(qiáng)制要求bean實(shí)例的一個(gè)注入,在應(yīng)用啟動(dòng)的時(shí)候,如果IOC容器中不存在對應(yīng)類型的bean,那么啟動(dòng)就會(huì)報(bào)錯(cuò);如果我們不希望實(shí)現(xiàn)依賴注入就可以把這個(gè)屬性設(shè)置為false

其次如果Spring IOC容器中存在多個(gè)相同類型的bean實(shí)例,但是由于@Autowired是根據(jù)類型去進(jìn)行注入的,所以Spring啟動(dòng)的時(shí)候就會(huì)提示一個(gè)錯(cuò)誤,就是原本只能注入一個(gè)單實(shí)例Bean,但是現(xiàn)在Ioc容器存在多個(gè),導(dǎo)致注入失?。会槍@個(gè)問題,可以使用@Primary @Qualifier這兩個(gè)注解來解決;

@Primary表示主要的Bean,當(dāng)存在多個(gè)相同類型的Bean的時(shí)候,會(huì)優(yōu)先使用聲明了@Primary注解的一個(gè)Bean

@Qualifier 相當(dāng)于條件篩選,可以根據(jù)Bean的名字可以去找到需要裝配的目標(biāo)Bean

2.@Resource

接下來我再解釋一下@Resource這個(gè)注解,@Resource是JDK中提供的一個(gè)注解,只不過Spring在實(shí)現(xiàn)上提供了這個(gè)注解的一個(gè)功能支持,它的使用方式和@Autowired類似,

最大的區(qū)別就是@Resource可以支持ByName 和 ByType兩種注入方式;

  • 如果使用name屬性,spring會(huì)根據(jù)bean的名字來進(jìn)行依賴注入;
  • 如果使用type屬性,spring會(huì)根據(jù)bean的類型來進(jìn)行依賴注入,如果兩個(gè)屬性都沒有進(jìn)行設(shè)置,@Resource默認(rèn)是根據(jù)定義的屬性名字去容器中進(jìn)行匹配,如果沒有匹配成功,再根據(jù)類型來匹配;
  • 如果兩個(gè)都沒有匹配到就會(huì)報(bào)錯(cuò)

總結(jié)

1.來源不同

@Autowired 是Spring提供的一個(gè)注解,@Resource是JSR 250規(guī)范里定義的一個(gè)注解,只不過Spring對JSR 250提供了支持

2.依賴查找順序不同

  • @Autowired 先根據(jù)類型(bytype)查找 如果存在多個(gè)Bean,再根據(jù)屬性名字(byName)進(jìn)行查找
  • @Resource 先根據(jù)名字(byName)查找,如果根據(jù)名稱查不到 再根據(jù)類型(bytype)查找

@Autowired默認(rèn)是根據(jù)類型來進(jìn)行匹配的,如果容器中存在多個(gè)類型相同的實(shí)例就會(huì)報(bào)錯(cuò),此時(shí)可以通過配合@Primary或@Qualifier注解來實(shí)現(xiàn)根據(jù)名字進(jìn)行裝配

  • @Resource 既可以根據(jù)名字匹配(byName),也可以根據(jù)屬性匹配(byType);
  • 因?yàn)锧Resourc兩個(gè)屬性name type,當(dāng)配置了name指定時(shí),就會(huì)根據(jù)名字匹配;
  • 使用了type指定就會(huì)根據(jù)類型匹配;
  • 如果兩個(gè)屬性都沒有設(shè)置,默認(rèn)就是根據(jù)定義的屬性名字去容器中進(jìn)行匹配的,如果 沒有匹配成功在進(jìn)行類型匹配,都沒有成功就會(huì)報(bào)錯(cuò)。

3.支持的參數(shù)不同

@Resource支持7個(gè)參數(shù) 最常用的就是name type

@Autowired 只支持一個(gè)參數(shù) required

4.依賴注入的支持不同

@Autowired 支持構(gòu)造方法注入,屬性注入,Setter方法注入

@Resource 只支持屬性注入,Setter方法注入 不支持構(gòu)造方法注入

5.編譯器IDEA的提示不同

當(dāng)注入Mapper對象時(shí),使用@Autowired注解 編譯器會(huì)報(bào)錯(cuò),而是用@Resource注解則不會(huì)提示錯(cuò)誤

注入方式實(shí)例

1.屬性注入

@RestController
public class UserController {
    // 屬性注入
    @Autowired
    private UserService userService;
 
    @RequestMapping("/add")
    public UserInfo add(String username, String password) {
        return userService.add(username, password);
    }
}

2.setter方法注入

@RestController
public class UserController {
    // Setter 注入
    private UserService userService;
 
    @Autowired
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
 
    @RequestMapping("/add")
    public UserInfo add(String username, String password) {
        return userService.add(username, password);
    }
}

3.構(gòu)造方法注入

@RestController
public class UserController {
    // 構(gòu)造方法注入
    private UserService userService;
 
    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }
 
    @RequestMapping("/add")
    public UserInfo add(String username, String password) {
        return userService.add(username, password);
    }
}

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

相關(guān)文章

  • 解決java.util.NoSuchElementException異常正確方法

    解決java.util.NoSuchElementException異常正確方法

    java.util.NoSuchElementException是Java中的一種異常,表示在迭代器或枚舉中找不到元素,這篇文章主要給大家介紹了關(guān)于解決java.util.NoSuchElementException異常的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Java實(shí)現(xiàn)圖片上傳至FastDFS入門教程

    Java實(shí)現(xiàn)圖片上傳至FastDFS入門教程

    這篇文章主要介紹了Java實(shí)現(xiàn)圖片上傳至FastDFS入門教程,通過前端ajax提交圖片到后端,java處理服務(wù)器文件上傳至FastDFS文件服務(wù)器系統(tǒng),以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • spring boot下mybatis配置雙數(shù)據(jù)源的實(shí)例

    spring boot下mybatis配置雙數(shù)據(jù)源的實(shí)例

    這篇文章主要介紹了spring boot下mybatis配置雙數(shù)據(jù)源的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java向文件末尾添加內(nèi)容示例分享

    java向文件末尾添加內(nèi)容示例分享

    本文為大家提供一個(gè)java向文件末尾添加內(nèi)容的示例分享,大家參考使用吧
    2014-01-01
  • SpringBoot配置Actuator組件,實(shí)現(xiàn)系統(tǒng)監(jiān)控

    SpringBoot配置Actuator組件,實(shí)現(xiàn)系統(tǒng)監(jiān)控

    在生產(chǎn)環(huán)境中,需要實(shí)時(shí)或定期監(jiān)控服務(wù)的可用性。Spring Boot的actuator(健康監(jiān)控)功能提供了很多監(jiān)控所需的接口,可以對應(yīng)用系統(tǒng)進(jìn)行配置查看、相關(guān)功能統(tǒng)計(jì)等。
    2021-06-06
  • MyBatis多表操作查詢功能

    MyBatis多表操作查詢功能

    這篇文章主要介紹了MyBatis多表操作,包括一對一查詢,一對多查詢的模型,多對多查詢的需求,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • 舉例講解Java中的多線程編程

    舉例講解Java中的多線程編程

    這篇文章主要介紹了舉例講解Java中的多線程編程,線程是Java學(xué)習(xí)中的重要知識,需要的朋友可以參考下
    2015-09-09
  • Spring對事務(wù)管理的支持

    Spring對事務(wù)管理的支持

    今天小編就為大家分享一篇關(guān)于Spring對事務(wù)管理的支持,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SpringSecurity定義多個(gè)過濾器鏈的操作代碼

    SpringSecurity定義多個(gè)過濾器鏈的操作代碼

    Spring?Security?是?Spring家族中的一個(gè)安全管理框架。相比與另外一個(gè)安全框架Shiro,它提供了更豐富的功能,社區(qū)資源也比Shiro豐富,今天通過本文給大家介紹SpringSecurity定義多個(gè)過濾器鏈的實(shí)例,感興趣的朋友跟隨小編一起看看吧
    2023-04-04
  • 如何取消IDEA中的項(xiàng)目和Git倉庫的關(guān)聯(lián)

    如何取消IDEA中的項(xiàng)目和Git倉庫的關(guān)聯(lián)

    這篇文章介紹了一種取消已經(jīng)開啟代碼控制的項(xiàng)目與Git倉庫關(guān)聯(lián)的簡單方法,首先,在IntelliJ IDEA中打開項(xiàng)目,刪除.idea目錄下的vcs.xml文件,這樣IDE界面上的Git圖標(biāo)就會(huì)消失,接下來,打開項(xiàng)目所在位置,通過文件管理器啟用“顯示隱藏的項(xiàng)目”選項(xiàng)
    2024-10-10

最新評論

睢宁县| 红原县| 安达市| 沾益县| 池州市| 龙山县| 邢台市| 嘉鱼县| 静乐县| 浑源县| 北宁市| 金坛市| 五寨县| 东丽区| 永寿县| 西畴县| 万州区| 德昌县| 宜春市| 多伦县| 尼勒克县| 应城市| 饶平县| 宣武区| 图们市| 鄂伦春自治旗| 宁南县| 蕉岭县| 会泽县| 瓦房店市| 阿瓦提县| 原平市| 洱源县| 武宁县| 奉节县| 建昌县| 股票| 钦州市| 二手房| 乌兰察布市| 阿合奇县|