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

Spring注入Map集合實(shí)現(xiàn)策略模式詳解

 更新時間:2023年11月23日 10:21:34   作者:chaojunma  
這篇文章主要介紹了Spring注入Map集合實(shí)現(xiàn)策略模式詳解,Spring提供通過@Resource注解將相同類型的對象注入到Map集合,并將對象的名字作為key,對象作為value封裝進(jìn)入Map,需要的朋友可以參考下

Spring注入實(shí)現(xiàn)策略模式

Spring提供通過@Resource注解將相同類型的對象注入到Map集合,并將對象的名字作為key,對象作為value封裝進(jìn)入Map,下面我們來具體實(shí)現(xiàn)一下:

首先我們定義一個抽象類

public abstract class TaskAbstractHandler {
 
    abstract public boolean handleJob(String message);
}

定義多個對象分別繼承上面的抽象類

@Slf4j
@Component("taskA")
public class TaskAHandler extends TaskAbstractHandler {
    @Override
    public boolean handleJob(String message) {
        // TODO 實(shí)現(xiàn)taskA具體的業(yè)務(wù)邏輯
    }
}
@Slf4j
@Component("taskB")
public class TaskBHandler extends TaskAbstractHandler {
    @Override
    public boolean handleJob(String message) {
        // TODO 實(shí)現(xiàn)taskB具體的業(yè)務(wù)邏輯
    }
}

注入Map對象

@Slf4j
@Component
public class ThirdMQListener implements MessageListener {
 
    @Resource
    private Map<String, TaskAbstractHandler> taskHandlerMap;
 
    @Override
    public Action consume(Message message, ConsumeContext consumeContext) {
 
        // 獲取消息體
        byte[] body = message.getBody();
        String messageBody = new String(body);
 
        JSONObject json = JSON.parseObject(messageBody);
        // 獲取任務(wù)編號
        String taskCode = json.getString("taskCode");
 
        // 根據(jù)tag獲取具體調(diào)用方
        TaskAbstractHandler taskHandler = taskHandlerMap.get(taskCode);
 
        if (taskHandler == null) {
            log.error("No object found according to the task code[{}]", taskCode);
            return Action.ReconsumeLater;
        }
 
        boolean isSuccess = taskHandler.handleJob(messageBody);
        if (isSuccess) {
            return Action.CommitMessage;
        } else {
            return Action.ReconsumeLater;
        }
    }
}

上面通過@Resource注解將TaskAbstractHandler類型的對象注入到Map集合中,再根據(jù)消息體中的任務(wù)編號從taskHandlerMap對象或獲取到具體的執(zhí)行任務(wù)對象,從而根據(jù)任務(wù)編號執(zhí)行不同的策略。

到此這篇關(guān)于Spring注入Map集合實(shí)現(xiàn)策略模式詳解的文章就介紹到這了,更多相關(guān)Spring注入實(shí)現(xiàn)策略模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java并發(fā)編程之Exchanger方法詳解

    Java并發(fā)編程之Exchanger方法詳解

    這篇文章主要介紹了Java并發(fā)編程之Exchanger方法詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • SpringBoot中循環(huán)依賴問題的原理與解決方案

    SpringBoot中循環(huán)依賴問題的原理與解決方案

    在Spring Boot開發(fā)中,依賴注入(DI)是核心特性之一,本文將通過一個實(shí)際錯誤案例,深入分析Spring Boot循環(huán)依賴的成因、解決方案,并提供最佳實(shí)踐建議,希望對大家有所幫助
    2025-07-07
  • mybatis-plus分頁查詢?nèi)N方法小結(jié)

    mybatis-plus分頁查詢?nèi)N方法小結(jié)

    本文主要介紹了mybatis-plus分頁查詢?nèi)N方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Mybatis-Plus條件構(gòu)造器的具體使用方法

    Mybatis-Plus條件構(gòu)造器的具體使用方法

    這篇文章主要介紹了Mybatis-Plus條件構(gòu)造器的具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java語言實(shí)現(xiàn)權(quán)重隨機(jī)算法完整實(shí)例

    java語言實(shí)現(xiàn)權(quán)重隨機(jī)算法完整實(shí)例

    這篇文章主要介紹了java語言實(shí)現(xiàn)權(quán)重隨機(jī)算法完整實(shí)例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-11-11
  • 一文詳解Spring攔截鏈的實(shí)現(xiàn)原理

    一文詳解Spring攔截鏈的實(shí)現(xiàn)原理

    在?Web應(yīng)用開發(fā)中,攔截器(Interceptor)是一種非常重要的機(jī)制,能夠在請求處理的各個階段進(jìn)行前置和后置處理,本文主要來探討一下?Spring?攔截鏈的實(shí)現(xiàn)原理,需要的可以了解下
    2025-01-01
  • 一文帶你了解SpringBoot中啟動參數(shù)的各種用法

    一文帶你了解SpringBoot中啟動參數(shù)的各種用法

    在使用 Spring Boot開發(fā)應(yīng)用時,我們通常需要根據(jù)不同的環(huán)境或特定需求調(diào)整啟動參數(shù),那么,Spring Boot 提供了哪些方式來配置這些啟動參數(shù)呢,下面小編就來和大家介紹一下吧
    2025-03-03
  • 使用Java模擬鼠標(biāo)和鍵盤的詳細(xì)操作步驟

    使用Java模擬鼠標(biāo)和鍵盤的詳細(xì)操作步驟

    這篇文章主要介紹了使用Java模擬鼠標(biāo)和鍵盤的詳細(xì)操作步驟,要運(yùn)行上面提供的Java程序,您需要遵循幾個步驟來設(shè)置Java環(huán)境、編寫程序代碼,并執(zhí)行該程序,文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2024-05-05
  • 詳解Maven settings.xml配置(指定本地倉庫、阿里云鏡像設(shè)置)

    詳解Maven settings.xml配置(指定本地倉庫、阿里云鏡像設(shè)置)

    這篇文章主要介紹了詳解Maven settings.xml配置(指定本地倉庫、阿里云鏡像設(shè)置),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Struts2學(xué)習(xí)教程之?dāng)r截器機(jī)制與自定義攔截器

    Struts2學(xué)習(xí)教程之?dāng)r截器機(jī)制與自定義攔截器

    這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)基礎(chǔ)教程之?dāng)r截器機(jī)制與自定義攔截器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05

最新評論

渝中区| 新竹县| 安新县| 双辽市| 宝应县| 都匀市| 苏尼特左旗| 宜兴市| 福建省| 德庆县| 迭部县| 宜春市| 庆云县| 金川县| 墨脱县| 华容县| 澄迈县| 西和县| 怀安县| 澄城县| 琼结县| 禹城市| 安溪县| 英吉沙县| 东海县| 红河县| 定日县| 崇仁县| 全椒县| 六枝特区| 中卫市| 林芝县| 杭锦后旗| 永仁县| 嘉荫县| 康乐县| 土默特左旗| 葫芦岛市| 银川市| 湖南省| 卓尼县|