使用@Autowired + Map 實現策略模式

使用@Autowired + Map 實現策略模式

創建接口

public interface UserService {String getName();
}

創建多個類實現上面的接口

實現一
import com.boot.service.UserService;
import org.springframework.stereotype.Service;@Service("zhangsan")
public class ZhangsanUserServiceImpl implements UserService {@Overridepublic String getName() {return "My name is zhangsan.";}
}
實現二

import com.boot.service.UserService;
import org.springframework.stereotype.Service;@Service("lisi")
public class LisiUserServiceImpl implements UserService {@Overridepublic String getName() {return "Hi my name is lisi.";}
}

提供接口

@RestController
@Slf4j
public class HelloWorldController {/*** map 的key:實例名,可以自己起,也可以用默認的,默認是類名* map 的value:實例對象*/@Autowiredprivate Map<String, UserService> userServiceMap;@GetMapping("userTest")public String getName(@RequestParam String name) {UserService userService = userServiceMap.get(name);String say = userService.getName();System.out.println(say);return say;}
}

調接口

GET http://localhost:8080/userTest?name=zhangsan 結果:My name is zhangsan.
GET http://localhost:8080/userTest?name=lisi  結果:Hi my name is lisi.

說明

在實現策略模式的時候,可以直接將類名起成策略的判斷條件,這種不推薦。也可以另外維護一套策略與實現類的對應關系

紙上得來終覺淺,絕知此事要躬行。
原文鏈接: https://www.cnblogs.com/shareToAll/p/18065406

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13627.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13627.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄算法訓練營第十六天|LeetCode104 二叉樹的最大深度、LeetCode111 二叉樹的最小深度、LeetCode222完全二叉樹的節點個數

題1&#xff1a; 指路&#xff1a;LeetCode104 二叉樹的最大深度 思路與代碼&#xff1a; 1.遞歸 求左右子樹的最大深度后加1(根到子樹也有1個深度單位)。代碼如下&#xff1a; class Solution { public:int maxDepth(TreeNode* root) {int ans 0;if (root NULL) return…

當他們在說業務的時候,到底在說什么

業務就是通過提供產品和服務給客戶&#xff0c;以獲取某種價值&#xff0c;形成業務閉環&#xff0c;并能自負盈虧。 文章會以生動形象的比喻來介紹業務到底是什么。 什么是業務&#xff1f; 業務&#xff0c;就像一場精彩的舞臺劇&#xff0c;每個角色都有自己的任務和目標…

electron學習記錄

1.下載electron electron/electron-quick-start: Clone to try a simple Electron app (github.com) 下載實例模板 2.安裝依賴 npm源改成中國鏡像 npm config set registry https://registry.npmmirror.com 然后用cnpm i 來安裝 npm換官方源 npm config set registry https:…

QT--TCP網絡通訊工具編寫記錄

QT–TCP網絡通訊工具編寫記錄 文章目錄 QT--TCP網絡通訊工具編寫記錄前言演示如下&#xff1a;一、服務端項目文件&#xff1a;【1.1】server_tcp.h 服務端聲明文件【1.2】thread_1.h 線程處理聲明文件【1.3】main.cpp 執行源文件【1.4】server_tcp.cpp 服務端邏輯實現源文件【…

cuda 內核啟動

C 使用 __global__ 聲明說明符定義內核&#xff0c;并使用新的 <<<...>>> 執行配置語法指定內核調用的 CUDA 線程數&#xff08;請參閱 C 語言擴展&#xff09;。 每個執行內核的線程都有一個唯一的線程 ID&#xff0c;可以通過內置變量在內核中訪問。 示例…

【最全的excel轉json!!!】使用Python腳本提取excel文本中的數據到json中

比如說&#xff1a;我有一個1.xlsx的文件需要轉成對應的json格式。 1&#xff09; excel 文件的大概內容&#xff1a; 2&#xff09;保存的方式類似于以下這種情況&#xff1a; 用Python腳本來實現 import pandas as pd import json# 讀取Excel文件 excel_path r"D:…

基礎知識篇:大語言模型核心原理解析

1??人工智能基礎概念全景圖 &#x1f4a1; &#x1f9e0;人工智能與機器學習 人工智能&#xff08;AI&#xff09;是計算機科學的一個分支&#xff0c;旨在模擬人類的智能來解決問題。而機器學習&#xff08;ML&#xff09;是AI的一個子集&#xff0c;它的魅力在于不需要顯…

【MySQL精通之路】MySQL8.0升級過程升級了什么

目錄 1.升級內容 1.1 mysql系統庫 1.2.其他庫 2.步驟 2.1 步驟1&#xff1a;數據字典庫升級。 2.2 步驟2&#xff1a;服務器升級。 3.mysql_upgrade 3.1 執行正常升級&#xff08;根據需要執行步驟1和2&#xff09;&#xff1a; 3.2 必要時僅執行步驟1&#xff1a; 3…

【MySQL精通之路】InnoDB(6)-磁盤結構(6)-Undolog

1.介紹 Undolog是與單個讀寫事務相關聯的Undolog記錄的集合。 Undolog包含有關如何撤消事務對聚集索引記錄最新更改的信息。如果另一個事務需要將查看一致性讀的一部分原始數據&#xff0c;則會從Undolog記錄中檢索未修改的數據。 2.結構 Undolog記錄存在于Undolog段中 而Un…

LLMPerf-為LLM提供可重現的性能指標

LLMPerf-為LLM推理提供可復現的性能指標 翻譯自文章&#xff1a;Reproducible Performance Metrics for LLM inference 結合之前的LLMPerf測試大模型API性能的文章進行查看&#xff0c;效果更佳。 1. 摘要 我們見過許多關于LLM性能的聲明&#xff1b;然而&#xff0c;這些聲明往…

Android面試題之Kotlin泛型和reified關鍵字

本文首發于公眾號“AntDream”&#xff0c;歡迎微信搜索“AntDream”或掃描文章底部二維碼關注&#xff0c;和我一起每天進步一點點 //泛型 class MagicBox<T>(item:T){var available falseprivate var subject:T itemfun fetch() : T? {return subject.takeIf { avai…

Ubuntu徹底卸載Nginx

停止Nginx服務 sudo systemctl stop nginx卸載Nginx軟件包 sudo apt purge nginx nginx-common nginx-core清除配置文件和依賴項 清除Nginx的配置文件 sudo rm -rf /etc/nginx清除Nginx安裝的依賴項 sudo apt autoremove清除相關文件和目錄 刪除Nginx的日志文件 sudo rm…

配置旁掛二層組網直接轉發示例(命令行)

業務需求 企業用戶通過WLAN接入網絡&#xff0c;以滿足移動辦公的最基本需求。且在覆蓋區域內移動發生漫游時&#xff0c;不影響用戶的業務使用。 組網需求 AC組網方式&#xff1a;旁掛二層組網。DHCP部署方式&#xff1a; AC作為DHCP服務器為AP分配IP地址。匯聚交換機SwitchB作…

深度學習基礎之《TensorFlow框架(18)—卷積神經網絡(2)》

一、卷積層 1、卷積層&#xff08;Convolutional Layer&#xff09;介紹 卷積神經網絡中每層卷積層由若干卷積單元&#xff08;卷積核&#xff09;組成&#xff0c;每個卷積單元的參數都是通過反向傳播算法最佳化得到的 卷積運算的目的是特征提取&#xff0c;第一層卷積層可能…

Gradle和Maven項目解決Spring Boot Configuration Annotation Processor not configured警告

問題描述 寫了一個配置類,加了注解@ConfigurationProperties(prefix = “xxx”) 后一直報警告:Spring Boot Configuration Annotation Processor not configured 意思是 Spring boot 未配置注解處理器 解決過程 出現這個問題后,百度查了解決方式 1.maven項目 maven項目是…

學習前端第四十四天(瀏覽器事件簡介)

一、事件處理程序 對事件作出響應&#xff0c;可以分配一個 處理程序 &#xff0c; 一個在事件發生時運行的函數 1、HTML特性綁定事件處理函數 <button id"btn1" οnclick"fn();console.log(xc)">保存1</button> 2、DOM屬性綁定事件處理函數…

純軟件雙機熱備

在信息化高速發展的今天&#xff0c;企業對于業務連續性的需求愈發強烈。無論哪個行業&#xff0c;系統的穩定運行都至關重要。為了確保系統的高可用性和業務連續性&#xff0c;純軟件雙機熱備技術應運而生&#xff0c;成為了企業IT架構中的關鍵一環。 雙機熱備軟件下載 …

04信號量

如果有兩個或者兩個以上的任務(進程 / 線程&#xff0c;并發的實體)&#xff0c;去訪問一個共享資源(硬件上面的&#xff0c;軟件上的)。我們必須要保證這個共享資源的有序訪問&#xff0c;否則會產生不可預知的后果 例子: very_important_i 5; // 共享資源 fun(…

vue3父組件使用ref獲取子組件的屬性和方法

在vue3中父組件訪問子組件中的屬性和方法是需要借助于ref: 1.<script setup> 中定義響應式變量 例如&#xff1a; const demo1 ref(null) 2.在引入的子組件標簽上綁定ref屬性的值與定義的響應式變量同名( <demo1 ref"demo1"/>)。 父組件代碼如下&…

cPanel中如何進行網站質量檢測

最近我在維護網站的時候需要查看網站質量如何&#xff0c;我使用的是Hostease的主機安裝的WordPress網站&#xff0c;隨后在咨詢了他們的技術支持后獲得了方法。 當您在cPanel中部署了網站后&#xff0c;確保網站的質量和性能是至關重要的。cPanel提供了一個便捷的功能Site Qu…