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

Spring中@Autowired自動注入map詳解

 更新時間:2023年10月20日 08:55:50   作者:架構帥  
這篇文章主要介紹了Spring中@Autowired自動注入map詳解,  spring是支持基于接口實現(xiàn)類的直接注入的,支持注入map,list等集合中,不用做其他的配置,直接注入,需要的朋友可以參考下

前言:

spring是支持基于接口實現(xiàn)類的直接注入的;

支持注入map,list等集合中,不用做其他的配置,直接注入;

為什么要用這種方式注入bean呢?

使用場景

適用于一個接口有多個實現(xiàn)類,然后根據不同的參數(shù)選擇執(zhí)行不同的實現(xiàn)類,

其實就是策略模式;

Spring 會在啟動時,自動查找實現(xiàn)了該接口的 bean,放到這個Map中去。 key為bean的名字,value為 實現(xiàn)了該接口的所有的 bean。

注意:這里只有在map的key為string類型時才有效;

@Autowired 標注作用于 Map 類型時,如果 Map 的 key 為 String 類型,則 Spring 會將容器中所有類型符合 Map 的 value 對應的類型的 Bean 增加進來,用 Bean 的 id 或 name 作為 Map 的 key。

代碼實現(xiàn)

首先定義一個的接口:

public interface KafkaStrategy {
 
    public void handler(McRequest mcRequest);
}

這個接口有多個實現(xiàn)類:

@Component("orderCancel")
@Slf4j
public class OrderCancelStrategy implements KafkaStrategy{
 
    @Autowired
    private BusinesService businesService;
 
    @Override
    public void handler(McRequest mcRequest) {
        // 執(zhí)行具體的業(yè)務
        businesService.orderCancel();
    }
}
 
@Component("orderRoolback")
@Slf4j
public class OrderRoolbackStrategy implements KafkaStrategy{
 
    @Autowired
    private BusinesService businesService;
 
    @Override
    public void handler(McRequest mcRequest) {
        // 執(zhí)行具體的業(yè)務
        businesService.orderRoolback();
    }
}
 
@Component("orderDelete")
@Slf4j
public class OrderDeleteStrategy implements KafkaStrategy{
 
    @Autowired
    private BusinesService businesService;
 
    @Override
    public void handler(McRequest mcRequest) {
        // 執(zhí)行具體的業(yè)務
        businesService.orderDelete();
    }
}

這里有三個實現(xiàn)類,都實現(xiàn)了KakfaStrategy接口;

將這三個實現(xiàn)類注入到sping容器中:

public class TestController{
    
    // 這塊其實已經把KafkaStrategy接口的實現(xiàn)類注入到TestController了,可以調用了
    @Autowired
    private final Map<String, KafkaStrategy> strategyMap = Maps.newConcurrentMap();
 
    // 這個構造方法的作用,其實不用也可以,為了防止重復注入,因此先清空,再注入
    public TestController(Map<String, KcStrategy> strategyMap) {
        this.strategyMap.clear();
        strategyMap.forEach(this.strategyMap::put);
    }
    
 
    public void test(){
        KafkaStrategy kafkaStrategy = strategyMap.get("orderDeleteStrategy");
        // 這樣就獲取到了對應的實現(xiàn)類了,想獲取哪個都可以
    }
 
}

其實這種通過@Autowired注入map(接口有多個實現(xiàn)類),

這種方式多用于策略模式中。

除了可以注入到map中,也可以注入到list等其他集合中;

到此這篇關于Spring中@Autowired自動注入map詳解的文章就介紹到這了,更多相關@Autowired自動注入map內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring @Lazy注解的定義及詳細源碼展示

    Spring @Lazy注解的定義及詳細源碼展示

    @Lazy是Spring延遲初始化Bean的注解,通過推遲實例化時機減少啟動時間與內存占用,適用于高成本Bean、條件化延遲及解決循環(huán)依賴,但需注意首次使用性能開銷與依賴順序問題,本文給大家介紹Spring @Lazy注解的定義及詳細源碼展示,感興趣的朋友一起看看吧
    2025-09-09
  • SpringCloud微服務熔斷器Hystrix使用詳解

    SpringCloud微服務熔斷器Hystrix使用詳解

    這篇文章主要介紹了Spring Cloud Hyxtrix的基本使用,它是Spring Cloud中集成的一個組件,在整個生態(tài)中主要為我們提供服務隔離,服務熔斷,服務降級功能,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • java實現(xiàn)多人聊天對話室

    java實現(xiàn)多人聊天對話室

    這篇文章主要為大家詳細介紹了java實現(xiàn)多人聊天對話室,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 使用jib插件為Java應用構建鏡像的方法

    使用jib插件為Java應用構建鏡像的方法

    這篇文章主要介紹了使用jib插件為Java應用構建鏡像,要是用戶本地沒安裝docker,可以使用jib制作出帶有鏡像的tar文件,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • java判斷String類型是否能轉換為int的方法

    java判斷String類型是否能轉換為int的方法

    今天小編就為大家分享一篇java判斷String類型是否能轉換為int的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java 根據貸款年限對應利率計算功能實現(xiàn)解析

    Java 根據貸款年限對應利率計算功能實現(xiàn)解析

    這篇文章主要介紹了Java 根據貸款年限對應利率計算功能實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 新手了解java 集合基礎知識

    新手了解java 集合基礎知識

    今天小編就為大家分享一篇關于Java集合總結,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧,希望對你有所幫助
    2021-07-07
  • Java繼承子類的構造函數(shù)方式

    Java繼承子類的構造函數(shù)方式

    這篇文章主要介紹了Java繼承子類的構造函數(shù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java實現(xiàn)獲取音頻文件詳細信息的純本地方案

    Java實現(xiàn)獲取音頻文件詳細信息的純本地方案

    在音頻處理開發(fā)中,FFmpeg一直是最常用的工具,它功能強大,支持幾乎所有主流音視頻格式,能輕松提取文件的采樣率、聲道數(shù)、時長、碼率等信息,但同時,FFmpeg也帶來了一些問題因此,在某些場景下,因此,在某些場景下我們完全可以使用 純Java實現(xiàn)音頻信息提取
    2025-11-11
  • Java Swing GridBagLayout網格袋布局的實現(xiàn)

    Java Swing GridBagLayout網格袋布局的實現(xiàn)

    這篇文章主要介紹了Java Swing GridBagLayout網格袋布局的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12

最新評論

屯门区| 都江堰市| 辉南县| 定日县| 平山县| 班玛县| 桑植县| 枣强县| 兴宁市| 高碑店市| 潮安县| 云梦县| 延安市| 万荣县| 靖西县| 平利县| 贞丰县| 孟连| 依安县| 招远市| 永仁县| 嘉黎县| 大埔区| 富平县| 宜兰县| 洪洞县| 侯马市| 兰西县| 西和县| 上林县| 江永县| 固安县| 富民县| 延寿县| 天全县| 瑞金市| 卢龙县| 团风县| 深州市| 扶绥县| 中宁县|