【CI/CD構建】關于不小心將springMVC注解寫在service層

背景

之前寫一個接口的時候沒有察覺到將@RequestBody這個注解帶到service層了。
今天提交代碼的時候,插件沒有檢測到這個低級錯誤,導致試飛構建連maven編譯都過不了,maven找不到程序包org.springframework.web.bind.annotation這個包
在這里插入圖片描述
在這里插入圖片描述

結果

試飛構建不成功

背后原因

如果將@RequestBody寫在 Service層會出現的問題

  1. 編譯錯誤:
    Service 層通常是業務邏輯層,它不直接處理 HTTP 請求。@RequestBody是 Spring MVC 用于處理 HTTP 請求的注解,它依賴于 Spring MVC 的請求處理機制。如果在 Service 層使用@RequestBody,會導致編譯錯誤,因為 Service 層沒有相應的請求處理上下文來解析這個注解。
  2. 邏輯混亂:
    從設計模式和分層架構的角度來看,這違背了職責分離原則。控制器層應該負責接收和解析 HTTP 請求,將請求數據轉換為業務邏輯層(Service 層)可以理解的對象形式,然后將這些對象傳遞給 Service 層進行業務處理。如果在 Service 層處理請求體的綁定,會使 Service 層與 HTTP 請求細節耦合,導致代碼難以維護和測試。例如,在單元測試 Service 層時,不應該涉及 HTTP 請求相關的內容,而@RequestBody的存在會引入這些不相關的因素。
  3. 無法正常工作:
    即使通過一些不合理的方式(如在不適當的上下文中強制加載 Spring MVC 相關的組件)讓代碼能夠編譯通過,@RequestBody在 Service 層也無法正確地獲取和解析 HTTP 請求體中的數據,因為它不在請求處理的流程中。它缺少 Spring MVC 的DispatcherServlet等組件對請求的分發和處理環境。

結語

希望uu們不會和我一樣犯這種低級錯誤(●′ω`●)ゞ

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

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

相關文章

Oracle Dataguard(主庫為雙節點集群)配置詳解(4):配置備庫

Oracle Dataguard(主庫為雙節點集群)配置詳解(4):配置備庫 目錄 Oracle Dataguard(主庫為雙節點集群)配置詳解(4):配置備庫一、為備庫配置靜態監聽1、配置 li…

《深入理解Mybatis原理》Mybatis中的緩存實現原理

一級緩存實現 什么是一級緩存? 為什么使用一級緩存? 每當我們使用MyBatis開啟一次和數據庫的會話,MyBatis會創建出一個SqlSession對象表示一次數據庫會話。 在對數據庫的一次會話中,我們有可能會反復地執行完全相同的查詢語句&…

win32匯編環境,窗口程序中單選框的一般操作示例

;運行效果 ;win32匯編環境,窗口程序中單選框的一般操作示例 ;比如在窗口程序中生成單選框,默認哪項選中,判斷當前選中哪一項,讓哪項選中,得到選中項的名稱等 ;直接抄進RadAsm可編譯運行。重點部分加備注。 ;以下是ASM文件 ;>&g…

從transformer到informer

Transformer和Informer都是深度學習領域中的模型架構,它們主要用于處理序列數據,如自然語言處理(NLP)和時間序列預測任務。 **Transformer**: Transformer模型最初在2017年由Google的研究者提出,它在NLP領…

hive知識體系

hive知識體系 hive知識體系 鏈接: 1Hive概覽 鏈接: 2Hive表類型 鏈接: 3Hive數據抽樣 鏈接: 4Hive計算引擎 鏈接: 5Hive存儲與壓縮 鏈接: 6Hive Sql 大全 鏈接: 6Hive Sql 大全-Hive 函數 鏈接: 6Hive Sql 大全-窗口函數 鏈接: 7Hive執行計劃 鏈接: 8Hive SQL底層執行原理 鏈接…

優化 Azure Synapse Dedicated SQL Pool中的 SQL 執行性能的經驗方法

在 Azure Synapse Dedicated SQL Pool中優化 SQL 執行涉及了解底層體系結構(例如分布和分區)、查詢優化(例如避免不必要的子查詢和聯接),以及利用具體化視圖和 PolyBase 等工具進行高效數據加載。 1.有效使用分布和分…

個人主頁搭建全流程(Nginx部署+SSL配置+DCDN加速)

前言 最近開始準備秋招,打算做一個個人主頁,以便在秋招市場上更有競爭力。 目前,現有的一些搭建主頁的博文教程存在以下一些問題: 使用Github Page進行部署,這在國內訪問容易受阻使用寶塔面板等框架,功能…

Spring MVC簡單數據綁定

【圖書介紹】《SpringSpring MVCMyBatis從零開始學(視頻教學版)(第3版)》_springspringmvcmybatis從零開始 代碼、課件、教學視頻與相關軟件包下載-CSDN博客 《SpringSpring MVCMyBatis從零開始學(視頻教學版)(第3版&…

嵌入式系統Linux實時化(四)Xenomai應用開發測試

1、Xenomai 原生API 任務管理 Xenomai 本身提供的一系列多任務調度機制,主要有以下一些函數: int rt_task_create (RT_TASK task, const char name, int stksize, int prio, intmode) ; 任務的創建;int rt_task_start(RT_TASK task, void(entry)(void cookie), void cookie…

如何在Ubuntu上安裝和配置Git

版本控制系統(VCS)是軟件開發過程中不可或缺的工具之一,它幫助開發者跟蹤代碼變更、協作開發以及管理不同版本的項目。Git作為當前最流行的分布式版本控制系統,因其高效性和靈活性而廣受青睞。本文將指導你如何在Ubuntu操作系統上…

[python] bisect_right

等價于C中的upper_bound bisect_right 函數介紹 在Python的 bisect 模塊中, bisect_right (別名 bisect )用于在有序序列中查找插入點。插入點是在序列中插入元素后,序列仍保持有序的位置。 bisect_right 函數返回的插入點是在已…

Mac上安裝Label Studio

在Mac上安裝Anaconda并隨后安裝Label Studio,可以按照以下步驟進行: 1. 在Mac上安裝Anaconda 首先,你需要從Anaconda的官方網站下載適用于Mac的安裝程序。訪問Anaconda官網,點擊“Download Anaconda”按鈕,選擇適合M…

vscode開啟調試模式,結合Delve調試器調試golang項目詳細步驟

1.前期準備 (1).在vs code中的擴展程序中搜索并安裝Go擴展程序 (2).安裝 Delve 調試器 go install github.com/go-delve/delve/cmd/dlvlatest (3).打開vs code的命令面板,輸入Go: Install/Update Tools,并單擊該命令執行,安裝或更新Go語…

SQL面試題1:連續登陸問題

引言 場景介紹: 許多互聯網平臺為了提高用戶的參與度和忠誠度,會推出各種連續登錄獎勵機制。例如,游戲平臺會給連續登錄的玩家發放游戲道具、金幣等獎勵;學習類 APP 會為連續登錄學習的用戶提供積分,積分可兌換課程或…

爬山算法與模擬退火算法的全方面比較

一、基本概念與原理 1. 爬山算法 爬山算法是一種基于啟發式的局部搜索算法,通過不斷地向當前解的鄰域中搜索更優解來逼近全局最優解。它的核心思想是,從當前解出發,在鄰域內找到一個使目標函數值更大(或更小)的解作為新的當前解,直到找不到更優的解為止。 2.模擬退火算…

PostgreSQL 超級管理員詳解

1. 什么是 PostgreSQL 超級管理員 PostgreSQL 超級管理員(superuser)是擁有數據庫系統最高權限的用戶。他們可以執行任何數據庫操作,包括但不限于創建和刪除數據庫、用戶、表空間、模式等。超級管理員權限是 PostgreSQL 中權限的最高級別。 …

安裝本地測試安裝apache-doris

一、安裝前規劃 我的服務器是三臺麒麟服務器,2臺跑不起來,這是我本地的,內存分配的也不多。 fe192.168.1.13 主數據庫端口9030訪問 8Gbe192.168.1.13內存4G 硬盤50be192.168.1.14內存4G 硬盤50be192.168.1.12內存4G 硬盤5013同時安裝的fe和be 。 原理:192.168.1.13 服…

GPT(General Purpose Timer)定時器

基本概念: 在嵌入式系統中,General Purpose Timer(GPT)是一種非常重要的硬件組件,用于提供定時功能。 定義:通用定時器是一種能夠提供精確時間測量和控制功能的電子設備或電路模塊。它可以產生周期性的時…

集中式架構vs分布式架構

一、集中式架構 如何準確理解集中式架構 1. 集中式架構的定義 集中式架構是一種將系統的所有計算、存儲、數據處理和控制邏輯集中在一個或少數幾個節點上運行的架構模式。這些中央節點(服務器或主機)作為系統的核心,負責處理所有用戶請求和…

數據挖掘實訓:天氣數據分析與機器學習模型構建

隨著氣候變化對各行各業的影響日益加劇,精準的天氣預測已經變得尤為重要。降雨預測在日常生活中尤其關鍵,例如農業、交通和災害預警等領域。本文將通過機器學習方法,利用歷史天氣數據預測明天是否會下雨,具體內容包括數據預處理、…