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

SpringBoot依賴注入Bean到Map實(shí)踐

 更新時(shí)間:2026年06月09日 09:41:59   作者:是小宗?。? 
Spring框架中Map注入機(jī)制解析及源碼分析,結(jié)合策略模式應(yīng)用場(chǎng)景,探討B(tài)ean實(shí)例存儲(chǔ)與調(diào)用擴(kuò)展性

一、現(xiàn)象介紹

Spring在項(xiàng)目啟動(dòng)初始化Map時(shí),如果Map是顯示的聲明需要注入,則, Spring會(huì)以Bean名稱作為key,value中類型Bean實(shí)例作為value。

將所有Bean容器中符合類型的實(shí)例都put到該Map中,返回Map。

前提是:Map的key是String類型的

二、源碼簡(jiǎn)析

源碼方法位置在org.springframework.beans.factory.support.DefaultListableBeanFactory

.doResolveDependency方法。

其中,在第1265行中,調(diào)用了resolveMultipleBeans方法:

進(jìn)入這個(gè)方法一看就明白了:

如果你仔細(xì)看的話,無論是普通的單類型注入還是這種集合Map等的注入,都會(huì)涉及到一個(gè)方法,

findAutowireCandidates,這個(gè)方法的作用就是查找匹配Spring容器中的所有同類型Bean實(shí)例。

三、實(shí)踐測(cè)試一下

首先準(zhǔn)備一個(gè)最簡(jiǎn)單的SpringBoot項(xiàng)目吧,只需要web依賴就行。

A和B兩個(gè)接口實(shí)現(xiàn)類

在瀏覽器輸入:http://localhost:8080/hello/AService

  • A實(shí)現(xiàn)類調(diào)用

  • B實(shí)現(xiàn)類調(diào)用

Map中斷點(diǎn):

四、有什么用

策略模式

舉一個(gè)簡(jiǎn)單的例子,我支付接口可以支持支付寶、微信、銀聯(lián),是不是只要各自實(shí)現(xiàn)支付接口即可,然后根據(jù)選擇的支付方式,調(diào)用不同的支付實(shí)現(xiàn)。后續(xù)要接入銀行卡、信用卡是不是很容易擴(kuò)展?

總結(jié)

關(guān)于設(shè)計(jì)模式之策略模式的相關(guān)詳細(xì)內(nèi)容,我們放到下節(jié)再來展開討論。

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

相關(guān)文章

  • mybatis-plus插入失敗的問題及解決

    mybatis-plus插入失敗的問題及解決

    這篇文章主要介紹了mybatis-plus插入失敗的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java中的CAS和自旋鎖詳解

    Java中的CAS和自旋鎖詳解

    這篇文章主要介紹了Java中的CAS和自旋鎖詳解,CAS算法(Compare And Swap),即比較并替換,是一種實(shí)現(xiàn)并發(fā)編程時(shí)常用到的算法,Java并發(fā)包中的很多類都使用了CAS算法,需要的朋友可以參考下
    2023-10-10
  • Springboot使用@Valid 和AOP做參數(shù)校驗(yàn)及日志輸出問題

    Springboot使用@Valid 和AOP做參數(shù)校驗(yàn)及日志輸出問題

    這篇文章主要介紹的Springboot使用@Valid 和AOP做參數(shù)校驗(yàn)及日志輸出問題,本文通過代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java設(shè)計(jì)模式之建造者模式的示例詳解

    Java設(shè)計(jì)模式之建造者模式的示例詳解

    建造者模式,是一種對(duì)象構(gòu)建模式?它可以將復(fù)雜對(duì)象的建造過程抽象出來,使這個(gè)抽象過程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)的對(duì)象。本文將通過示例講解建造者模式,需要的可以參考一下
    2022-10-10
  • MyBatis-Plus自定義SQL和復(fù)雜查詢的實(shí)現(xiàn)

    MyBatis-Plus自定義SQL和復(fù)雜查詢的實(shí)現(xiàn)

    MyBatis-Plus增強(qiáng)了MyBatis的功能,提供注解和XML兩種自定義SQL方式,支持復(fù)雜查詢?nèi)缍啾黻P(guān)聯(lián)、動(dòng)態(tài)分頁等,通過注解如@Select、@Insert、@Update、@Delete實(shí)現(xiàn)CRUD操作,本文就來介紹一下,感興趣的可以了解一下
    2024-10-10
  • Java異常學(xué)習(xí)之自定義異常詳解

    Java異常學(xué)習(xí)之自定義異常詳解

    你的程序總有一天會(huì)崩潰掉,在崩潰掉的時(shí)候我們要知道它在哪,為了什么而崩潰掉,數(shù)據(jù)的保存或者丟失情況如何等問題。下面這篇文章主要給大家介紹了關(guān)于Java異常學(xué)習(xí)之自定義異常的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • Java代碼注釋規(guī)范詳解

    Java代碼注釋規(guī)范詳解

    代碼附有注釋對(duì)程序開發(fā)者來說非常重要,隨著技術(shù)的發(fā)展,在項(xiàng)目開發(fā)過程中,必須要求程序員寫好代碼注釋,這樣有利于代碼后續(xù)的編寫和使用。下面給大家分享java代碼注釋的規(guī)范,需要的朋友參考下
    2016-02-02
  • 關(guān)于spring三級(jí)緩存的解讀

    關(guān)于spring三級(jí)緩存的解讀

    Spring三級(jí)緩存解決循環(huán)依賴、AOP和多線程問題,包括singletonObjects、earlySingletonObjects和singletonFactories三層緩存,通過不同方法獲取bean并解決這些問題
    2025-02-02
  • java使用Base64編碼實(shí)例

    java使用Base64編碼實(shí)例

    這篇文章主要介紹了java使用Base64編碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 淺析JDK12的五大重要新特性(推薦)

    淺析JDK12的五大重要新特性(推薦)

    這篇文章主要介紹了JDK12的五大重要新特性,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

十堰市| 新建县| 志丹县| 安福县| 渝中区| 林州市| 海淀区| 新巴尔虎右旗| 内江市| 定结县| 江达县| 高陵县| 东平县| 嘉祥县| 阿拉善右旗| 扎鲁特旗| 太保市| 工布江达县| 汉寿县| 鄂伦春自治旗| 陈巴尔虎旗| 仁寿县| 西青区| 四子王旗| 舞阳县| 祁东县| 克东县| 泗阳县| 行唐县| 乳源| 通道| 镇远县| 龙门县| 奉贤区| 台湾省| 德昌县| 郑州市| 吉安县| 博乐市| 锦屏县| 郓城县|