常用注解:@PostMapping、@RequestBody、@Autowired、@Service、@Mapper

1.?@PostMapping

作用:將方法綁定到?HTTP POST 請求的特定路徑上

用法:

@PostMapping("/login")           // 綁定到 POST /login
@PostMapping("/employees")       // 綁定到 POST /employees
@PostMapping("/users/{id}")      // 路徑變量

等價寫法:

@RequestMapping(value = "/login", method = RequestMethod.POST)

常見 HTTP 方法注解:

  • @GetMapping:GET 請求(查詢)
  • @PostMapping:POST 請求(新增)
  • @PutMapping:PUT 請求(修改)
  • @DeleteMapping:DELETE?請求(刪除)

2. @RequestBody

作用:將 HTTP 請求體(JSON/XML)轉換為?Java 對象

用法:

@PostMapping("/login")
public Result login(@RequestBody EmployeeLoginDTO dto) {// dto 自動從請求體 JSON 轉換而來
}

請求示例:

POST /login
Content-Type: application/json{"username": "admin","password": "123456"
}

轉換過程:

  • Spring 讀取請求體?JSON
  • 使用 Jackson 庫反序列化
  • 創建?EmployeeLoginDTO?實例
  • 調用?setter 方法填充屬性

注意:

  • 只能有一個?@RequestBody?參數
  • 需要?Content-Type: application/json
  • 配合?@Valid?做參數校驗

3.?@Autowired

作用:自動注入依賴對象(Spring?的依賴注入)

用法:

@RestController
public class EmployeeController {@Autowiredprivate EmployeeService employeeService;  // 自動注入 Service@Autowiredprivate JwtProperties jwtProperties;      // 自動注入配置
}

注入方式:

// 1. 字段注入(常用)
@Autowired
private EmployeeService employeeService;// 2. 構造器注入(推薦)
private final EmployeeService employeeService;
public EmployeeController(EmployeeService employeeService) {this.employeeService = employeeService;
}// 3. Setter 注入
@Autowired
public void setEmployeeService(EmployeeService employeeService) {this.employeeService = employeeService;
}

工作原理:

  • Spring 容器啟動時掃描?@Component、@Service、@Repository?等注解
  • 創建?Bean 實例并放入容器
  • 遇到?@Autowired?時,從容器中查找匹配的?Bean 注入

4.?@Service

作用:標記業務邏輯層,Spring?會將其注冊為 Bean

用法:

@Service
public class EmployeeServiceImpl implements EmployeeService {// 業務邏輯實現
}

等價注解:

@Component  // 通用組件
@Service    // 業務層(語義更明確)
@Repository // 數據訪問層
@Controller // 控制層

特點:

  • Spring?自動掃描并創建實例
  • 支持依賴注入
  • 支持事務管理(@Transactional)
  • 單例模式(默認)

5. @Mapper

作用:標記?My

Batis 的?Mapper?接口,MyBatis 會為其創建代理實現

用法:

@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {@Select("select * from employee where username = #{username}")Employee getByUsername(String username);
}

工作原理:

  • MyBatis?掃描?@Mapper?接口
  • 為接口創建動態代理實現
  • 將?SQL 注解或?XML?映射轉換為實際數據庫操作

配置掃描:

// 方式1:每個接口加 @Mapper
@Mapper
public interface EmployeeMapper { }// 方式2:包掃描(推薦)
@MapperScan("com.sky.mapper")
@SpringBootApplication
public class SkyApplication { }

工作原理:

  • MyBatis?掃描?@Mapper?接口
  • 為接口創建動態代理實現
  • 將?SQL 注解或?XML?映射轉換為實際數據庫操作

配置掃描:

// 方式1:每個接口加 @Mapper
@Mapper
public interface EmployeeMapper { }// 方式2:包掃描(推薦)
@MapperScan("com.sky.mapper")
@SpringBootApplication
public class SkyApplication { }

注解組合使用示例

@RestController                    // 標記為控制器
@RequestMapping("/admin/employee") // 類級別路徑
public class EmployeeController {@Autowired                     // 自動注入private EmployeeService employeeService;@PostMapping("/login")         // 綁定 POST 請求@ApiOperation("員工登錄")       // 接口文檔public Result<EmployeeLoginVO> login(@RequestBody              // 從請求體獲取@Valid                    // 參數校驗EmployeeLoginDTO dto) {Employee employee = employeeService.login(dto);// 處理邏輯...return Result.success(vo);}
}

記憶要點

  • @PostMapping:綁定 HTTP 請求路徑
  • @RequestBody:JSON 轉 Java 對象
  • @Autowired:自動注入依賴
  • @Service:標記業務層 Bean
  • @Mapper:標記數據訪問接口

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

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

相關文章

SoC日志管理

目錄 一、汽車控制器中日志的核心類型 二、日志管理的核心環節與策略 1. 日志采集:確保“全面且不冗余” 2. 日志存儲:平衡“可靠性”與“存儲成本” 3. 日志安全:防止“篡改與泄露” 4. 日志生命周期:符合“法規與成本” 5. 日志工具與實現 三、汽車場景的特殊約束與應對 …

橫評五款開源多智能體框架,AI高手都在用哪個?下一款Manus、Cursor、Devin,誰能撐起來?

Agent 成為共識的速度非常快。但今年 Agent 的真正轉折點在于&#xff1a;多智能體。 從科研自動化到任務編排&#xff0c;從自動開淘寶店到 Vibe 一切&#xff0c;從 AI 瀏覽器到今天的 ChatGPT Agent&#xff0c;一切都是多智能體的味道。 但要真正搭建一個多智能體&#x…

GitHub每日最火火火項目(9.10)

1. Physical-Intelligence / openpi 項目名稱&#xff1a;openpi項目介紹&#xff1a;基于 Python 開發&#xff0c;聚焦于物理智能領域&#xff0c;為相關研究與應用提供支持。Python 在科學計算、人工智能等領域有著廣泛且成熟的生態&#xff0c;借助其豐富的庫&#xff08;如…

2025年滲透測試面試題總結-61(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 2. 提交過什么漏洞 3. 常用漏洞掃描工具 4. OWASP TOP 10 2021核心變化 5. MySQL寫WebShell權限要求 6.…

高可用消息隊列線程池設計與實現:從源碼解析到最佳實踐

前言在現代分布式系統中&#xff0c;消息隊列處理是核心組件之一。今天我們將深入解析一個高性能、高可用的消息隊列線程池實現——FindMessageQueue&#xff0c;并探討如何將其優化應用于實際項目中。一、核心架構設計1.1 整體架構圖┌───────────────────…

Android App瘦身方法介紹

第一章 安裝包構成深度剖析1.1 APK文件結構解剖APK文件本質是一個ZIP壓縮包&#xff0c;通過unzip -l app.apk命令可查看其內部結構&#xff1a;Archive: app.apkLength Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- -…

深入淺出遷移學習:從理論到實踐

1. 引言&#xff1a;為什么需要遷移學習&#xff1f;在深度學習爆發的這十年里&#xff0c;我們見證了模型性能的飛速提升 ——ResNet 在圖像分類上突破人類視覺極限&#xff0c;BERT 在 NLP 任務上刷新基準&#xff0c;GPT 系列更是開啟了大語言模型時代。但這些亮眼成果的背后…

嵌入式人別再瞎折騰了!這8個開源項目,解決按鍵/隊列/物聯網所有痛點,小白也能抄作業

嵌入式人別再瞎折騰了&#xff01;這8個開源項目&#xff0c;解決按鍵/隊列/物聯網所有痛點&#xff0c;小白也能抄作業 你是不是也有過這樣的崩潰時刻&#xff1a;想做個按鍵控制&#xff0c;結果長按、連擊、組合鍵的邏輯寫了200行if-else&#xff0c;最后還時不時串鍵&#…

C++篇(7)string類的模擬實現

一、string的成員變量string和數據結構中的順序表類似&#xff0c;本質上可以理解成字符順序表&#xff0c;其成員變量仍然是_str&#xff0c;_size和_capacity。但是&#xff0c;C標準庫里面也有一個string&#xff0c;和我們要自己實現的string類沖突了&#xff0c;該如何解決…

【直接套模板】如何用 Web of Science 精準檢索文獻?

在文獻檢索的時候遇到一些問題&#xff0c;單獨使用關鍵詞檢索出來的文章數量太多&#xff0c;如果是多加一些限定詞&#xff0c;又什么都檢索不到&#xff1a;比如我明明知道某篇論文已經發表&#xff0c;但在 Web of Science (WoS) 里卻檢索不到。這其實和檢索式的寫法密切相…

HTTP 協議:從原理到應用的深度剖析

一、什么是HTTP協議&#xff1f;HTTP協議&#xff0c;全稱 Hyper Text Transfer Protocol&#xff08;超?本傳輸協議&#xff09;的縮寫&#xff0c;是?于服務器與客戶端瀏覽器之間傳輸超?本數據&#xff08;?字、圖?、視頻、?頻&#xff09;的應?層協議。它規定了客戶端…

【算法--鏈表】138.隨機鏈表的復制--通俗講解

算法通俗講解推薦閱讀 【算法–鏈表】83.刪除排序鏈表中的重復元素–通俗講解 【算法–鏈表】刪除排序鏈表中的重復元素 II–通俗講解 【算法–鏈表】86.分割鏈表–通俗講解 【算法】92.翻轉鏈表Ⅱ–通俗講解 【算法–鏈表】109.有序鏈表轉換二叉搜索樹–通俗講解 【算法–鏈表…

為什么現在企業注重數據可視化?一文講清可視化數據圖表怎么做

目錄 一、企業注重數據可視化的原因 1.提升數據理解效率 2.發現數據中的規律和趨勢 3.促進企業內部溝通與協作 4.增強決策的科學性 5.提升企業競爭力 二、可視化數據圖表的基本概念 1.常見的可視化圖表類型 2.可視化圖表的構成要素 3.可視化圖表的設計原則 三、制作…

Cursor 輔助開發:快速搭建 Flask + Vue 全棧 Demo 的實戰記錄

Cursor 輔助開發&#xff1a;快速搭建 Flask Vue 全棧 Demo 的實戰記錄 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般絢爛的技術棧中&#xff0c;我是那個永不停歇的色彩收集者。 &#x1f98b; 每一個優化都是我培育的花朵&#xff0c;每一個…

實戰:用 Python 搭建 MCP 服務 —— 模型上下文協議(Model Context Protocol)應用指南

&#x1f4cc; 實戰&#xff1a;用 Python 搭建 MCP 服務 —— 模型上下文協議&#xff08;Model Context Protocol&#xff09;應用指南 標簽&#xff1a;#MCP #AI工程化 #Python #LLM上下文管理 #Agent架構&#x1f3af; 引言&#xff1a;為什么需要 MCP&#xff1f; 在構建大…

宋紅康 JVM 筆記 Day16|垃圾回收相關概念

一、今日視頻區間 P154-P168 二、一句話總結 System.gc()的理解&#xff1b;內存溢出與內存泄漏&#xff1b;Stop The World;垃圾回收的并行與并發&#xff1b;安全點與安全區域&#xff1b;再談引用&#xff1a;強引用&#xff1b;再談引用&#xff1a;軟引用&#xff1b;再談…

OpenCV 高階 圖像金字塔 用法解析及案例實現

目錄 一、什么是圖像金字塔&#xff1f; 二、圖像金字塔的核心作用 三、圖像金字塔的核心操作&#xff1a;上下采樣 3.1 向下采樣&#xff08; pyrDown &#xff09;&#xff1a;從高分辨率到低分辨率 1&#xff09;原理與步驟 2&#xff09;關鍵注意事項 3&#xff09;…

【ARMv7】系統復位上電后的程序執行過程

引子&#xff1a;對于ARMv7-M系列SOC來說&#xff0c;上電后程序復位執行的過程相對來說比較簡單&#xff0c;因為絕大部分芯片&#xff0c;都是XIP&#xff08;eXecute In Place&#xff0c;就地執行&#xff09;模式執行程序&#xff0c;不需要通過BooROM->PL(preloader)-…

神經網絡的初始化:權重與偏置的數學策略

在深度學習中&#xff0c;神經網絡的初始化是一個看似不起眼&#xff0c;卻極其重要的環節。它就像是一場漫長旅程的起點&#xff0c;起點的選擇是否恰當&#xff0c;往往決定了整個旅程的順利程度。今天&#xff0c;就讓我們一起深入探討神經網絡初始化的數學策略&#xff0c;…

第 16 篇:服務網格的未來 - Ambient Mesh, eBPF 與 Gateway API

系列文章:《Istio 服務網格詳解》 第 16 篇:服務網格的未來 - Ambient Mesh, eBPF 與 Gateway API 本篇焦點: 反思當前主流 Sidecar 模式的挑戰與權衡。 深入了解 Istio 官方的未來演進方向:Ambient Mesh (無邊車模式)。 探討革命性技術 eBPF 將如何從根本上重塑服務網格的…