亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

回答

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

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

1.@Autowired

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

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

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

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

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

2.@Resource

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

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

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

總結(jié)

1.來源不同

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

2.依賴查找順序不同

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

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

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

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

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

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

4.依賴注入的支持不同

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

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

5.編譯器IDEA的提示不同

當(dāng)注入Mapper對象時,使用@Autowired注解 編譯器會報錯,而是用@Resource注解則不會提示錯誤

注入方式實例

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);
    }
}

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

相關(guān)文章

  • 開發(fā)10年,全記在這本Java進(jìn)階寶典里了

    開發(fā)10年,全記在這本Java進(jìn)階寶典里了

    這篇文章主要給大家分享介紹了這本Java進(jìn)階寶典里,是開發(fā)10年總結(jié)出來的,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧
    2019-04-04
  • spring?boot只需兩步優(yōu)雅整合activiti示例解析

    spring?boot只需兩步優(yōu)雅整合activiti示例解析

    這篇文章主要主要來教大家spring?boot優(yōu)雅整合activiti只需兩步就可完成測操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2022-03-03
  • Java獲取http和https協(xié)議返回的json數(shù)據(jù)

    Java獲取http和https協(xié)議返回的json數(shù)據(jù)

    本篇文章主要介紹了Java獲取http和https協(xié)議返回的json數(shù)據(jù) ,本篇文章提供兩個方法,幫助各位如何獲取http和https返回的數(shù)據(jù)。有興趣的可以了解一下。
    2017-01-01
  • Java基礎(chǔ)知識總結(jié)之繼承

    Java基礎(chǔ)知識總結(jié)之繼承

    這一篇我們來學(xué)習(xí)面向?qū)ο蟮牡诙€特征——繼承,文中有非常詳細(xì)的基礎(chǔ)知識總結(jié),對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Spring Boot項目中如何對接口請求參數(shù)打印日志

    Spring Boot項目中如何對接口請求參數(shù)打印日志

    在SpringBoot項目中,打印接口請求參數(shù)有多種方法,如使用AOP、控制器建議、攔截器、@ModelAttribute、SpringBootActuator、日志框架的MDC、自定義過濾器和SpringWebflux,這些方法有助于API調(diào)試和監(jiān)控,但需注意隱私和敏感信息安全
    2024-10-10
  • 淺談Spring AOP中args()和argNames的含義

    淺談Spring AOP中args()和argNames的含義

    這篇文章主要介紹了Spring AOP中args()和argNames的含義,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Struts2 Result 參數(shù)詳解

    Struts2 Result 參數(shù)詳解

    這篇文章主要講解Struts2 Result的參數(shù),講的比較詳細(xì),希望能給大家做一個參考。
    2016-06-06
  • Spring Security基于JWT登錄認(rèn)證的項目實踐

    Spring Security基于JWT登錄認(rèn)證的項目實踐

    JWT被用來在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶身份信息,本文主要介紹了Spring Security基于JWT登錄認(rèn)證的項目實踐,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java 深入淺出掌握Map集合之雙列集合

    Java 深入淺出掌握Map集合之雙列集合

    雙列集合是每個元素都有鍵與值兩部分組成的集合,記錄的是鍵值對對應(yīng)關(guān)系,即通過鍵可以找到值,鍵必須是唯一,值可以重復(fù),接下來跟著小編具體了解吧
    2021-11-11
  • Java數(shù)據(jù)結(jié)構(gòu)及算法實例:考拉茲猜想 Collatz Conjecture

    Java數(shù)據(jù)結(jié)構(gòu)及算法實例:考拉茲猜想 Collatz Conjecture

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實例:考拉茲猜想 Collatz Conjecture,本文直接給出實現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
    2015-06-06

最新評論