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

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

 更新時(shí)間:2024年06月11日 15:47:21   作者:有WiFi就好說  
這篇文章主要介紹了@Resource和@Autowired兩個(gè)注解的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(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容器中不存在對(duì)應(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)致注入失敗;針對(duì)這個(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對(duì)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對(duì)象時(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à)值,希望對(duì)大家有所幫助。如有錯(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)控所需的接口,可以對(duì)應(yīng)用系統(tǒng)進(jìn)行配置查看、相關(guān)功能統(tǒng)計(jì)等。
    2021-06-06
  • MyBatis多表操作查詢功能

    MyBatis多表操作查詢功能

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

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

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

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

    今天小編就為大家分享一篇關(guān)于Spring對(duì)事務(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

最新評(píng)論

个旧市| 铜陵市| 广州市| 汉沽区| 潜江市| 集贤县| 汝州市| 兴义市| 来凤县| 梧州市| 孟连| 永宁县| 秦皇岛市| 日喀则市| 德令哈市| 通化县| 密山市| 汤原县| 黄陵县| 韩城市| 镇雄县| 昌都县| 惠安县| 介休市| 通江县| 合肥市| 财经| 苍山县| 达拉特旗| 霍城县| 洛宁县| 江华| 麻栗坡县| 唐河县| 泸水县| 林甸县| 增城市| 昭通市| 马公市| 凤阳县| 南江县|