Spring注入Map集合實現(xiàn)策略模式詳解
Spring注入實現(xiàn)策略模式
Spring提供通過@Resource注解將相同類型的對象注入到Map集合,并將對象的名字作為key,對象作為value封裝進入Map,下面我們來具體實現(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 實現(xiàn)taskA具體的業(yè)務邏輯
}
}@Slf4j
@Component("taskB")
public class TaskBHandler extends TaskAbstractHandler {
@Override
public boolean handleJob(String message) {
// TODO 實現(xiàn)taskB具體的業(yè)務邏輯
}
}注入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);
// 獲取任務編號
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ù)消息體中的任務編號從taskHandlerMap對象或獲取到具體的執(zhí)行任務對象,從而根據(jù)任務編號執(zhí)行不同的策略。
到此這篇關于Spring注入Map集合實現(xiàn)策略模式詳解的文章就介紹到這了,更多相關Spring注入實現(xiàn)策略模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot中循環(huán)依賴問題的原理與解決方案
在Spring Boot開發(fā)中,依賴注入(DI)是核心特性之一,本文將通過一個實際錯誤案例,深入分析Spring Boot循環(huán)依賴的成因、解決方案,并提供最佳實踐建議,希望對大家有所幫助2025-07-07
mybatis-plus分頁查詢?nèi)N方法小結(jié)
本文主要介紹了mybatis-plus分頁查詢?nèi)N方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05
一文帶你了解SpringBoot中啟動參數(shù)的各種用法
在使用 Spring Boot開發(fā)應用時,我們通常需要根據(jù)不同的環(huán)境或特定需求調(diào)整啟動參數(shù),那么,Spring Boot 提供了哪些方式來配置這些啟動參數(shù)呢,下面小編就來和大家介紹一下吧2025-03-03
詳解Maven settings.xml配置(指定本地倉庫、阿里云鏡像設置)
這篇文章主要介紹了詳解Maven settings.xml配置(指定本地倉庫、阿里云鏡像設置),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12

