[特殊字符] Spring Boot 常用注解全解析:20 個高頻注解 + 使用場景實例

一文掌握 Spring Boot 中最常用的 20 個注解,涵蓋開發、配置、Web、數據庫、測試等場景,配合示例講解,一站式掌握!


📌 一、核心配置類注解

1. @SpringBootApplication

  • 作用:標記為 Spring Boot 應用的入口類,包含了 @Configuration@EnableAutoConfiguration@ComponentScan
  • 使用場景:主啟動類上唯一標注一次。
@SpringBootApplication
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}

🧩 二、組件注冊相關注解

2. @Component

  • 作用:聲明一個組件,交由 Spring 容器管理。
  • 使用場景:普通工具類、服務類等。
@Component
public class MyUtil {// ...
}

3. @Service

  • 作用:聲明業務邏輯層組件。
  • 區別:語義上表示“服務類”,本質還是 @Component
@Service
public class UserService {// ...
}

4. @Repository

  • 作用:聲明數據訪問層組件,并支持自動異常轉換。
  • 使用場景:操作數據庫的 DAO 類。
@Repository
public class UserDao {// ...
}

5. @Controller

  • 作用:聲明控制器類,處理前端請求。
  • 配套注解:配合 @RequestMapping@GetMapping 等使用。
@Controller
public class HomeController {@GetMapping("/")public String home() {return "index";}
}

6. @RestController

  • 作用:相當于 @Controller + @ResponseBody,返回 JSON 數據。
  • 使用場景:用于 RESTful API。
@RestController
@RequestMapping("/api")
public class UserController {@GetMapping("/users")public List<User> getUsers() {return userService.getAll();}
}

🌐 三、請求映射注解

7. @RequestMapping

  • 作用:用于類或方法上,通用映射。
  • 支持:GET、POST、PUT、DELETE等方式。
@RequestMapping(value = "/user", method = RequestMethod.GET)
public User getUser() {return user;
}

8. @GetMapping / @PostMapping / @PutMapping / @DeleteMapping

  • 作用:簡化的 HTTP 方法映射注解。
  • 建議:優先使用這些更語義化的注解。
@GetMapping("/user/{id}")
public User findById(@PathVariable Long id) {return userService.find(id);
}

💾 四、依賴注入注解

9. @Autowired

  • 作用:自動注入 Spring 管理的 Bean。
  • 推薦:構造器注入代替字段注入。
@Autowired
private UserService userService;

10. @Qualifier

  • 作用:解決多個 Bean 注入時的沖突。
  • 配合@Autowired 使用。
@Autowired
@Qualifier("myImpl")
private MyService service;

🏷? 五、參數綁定注解

11. @RequestParam

  • 作用:綁定 URL 查詢參數。
  • 默認:支持設置是否必須。
@GetMapping("/search")
public List<User> search(@RequestParam String keyword) {return userService.search(keyword);
}

12. @PathVariable

  • 作用:綁定路徑中的變量。
@GetMapping("/user/{id}")
public User getUser(@PathVariable Long id) {return userService.getById(id);
}

13. @RequestBody

  • 作用:接收 JSON 數據,反序列化為對象。
@PostMapping("/user")
public void saveUser(@RequestBody User user) {userService.save(user);
}

🔒 六、配置與環境注解

14. @Value

  • 作用:讀取 application.yml.properties 中的配置項。
@Value("${server.port}")
private int port;

15. @Configuration

  • 作用:標記為配置類,等價于 XML 配置。
@Configuration
public class AppConfig {@Beanpublic MyBean myBean() {return new MyBean();}
}

16. @Bean

  • 作用:向 Spring 容器注冊一個 Bean。
  • 配合@Configuration 使用。
@Bean
public RestTemplate restTemplate() {return new RestTemplate();
}

🧪 七、測試相關注解

17. @SpringBootTest

  • 作用:用于 Spring Boot 的集成測試。
@SpringBootTest
public class UserServiceTest {@Autowiredprivate UserService userService;
}

18. @MockBean

  • 作用:用于測試中替換某個 Bean,通常用于 Mock。
@MockBean
private UserRepository userRepository;

? 八、數據校驗注解(JSR-303)

19. @Valid / @Validated

  • 作用:用于校驗請求參數是否合法。
  • 配套注解:配合 @NotNull@Size 等使用。
@PostMapping("/register")
public void register(@Valid @RequestBody User user) {// ...
}

🔄 九、事務管理注解

20. @Transactional

  • 作用:開啟事務。
  • 常用屬性rollbackFor, readOnly, propagation
@Transactional(rollbackFor = Exception.class)
public void saveData() {// ...
}

? 總結表格:注解速查表

注解類型場景特點
@SpringBootApplication啟動注解啟動類三合一復合注解
@Component通用組件工具類等可被掃描
@Service業務組件Service 層本質是 @Component
@RepositoryDAO組件數據訪問自動異常封裝
@ControllerWeb 控制器頁面跳轉搭配模板引擎
@RestControllerAPI 控制器返回 JSON= @Controller + @ResponseBody
@Autowired注入自動注入構造/字段均可
@RequestMapping請求映射多 HTTP 方法可用于類/方法
@GetMapping請求映射精準 HTTP 方法推薦使用
@Value配置讀取yml、prop 值注入字符串解析
@Transactional事務管理Service 層原子性保障
@Bean手動注冊第三方類自定義 Bean
@Valid / @Validated參數校驗表單、實體搭配校驗注解
@SpringBootTest測試注解單元/集成測試提供完整容器
@MockBean測試 Mock替換 Bean使用 Mockito

📘 建議收藏:這些注解是你開發 Spring Boot 項目的“基本功”,越熟練越高效!

如果你覺得有幫助,別忘了點贊、收藏和分享~

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

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

相關文章

【工具變量】地級市城市包容性綠色增長數據(2011-2023年)

城市包容性綠色增長是指在推動城市經濟增長的過程中&#xff0c;兼顧環境可持續性、社會公平和包容性發展的理念與實踐。它強調在實現綠色轉型和低碳發展的同時&#xff0c;保障社會各群體&#xff0c;特別是弱勢群體的利益與參與權利&#xff0c;確保增長成果能夠公平共享 本…

深入理解React Hooks:從使用到原理

4. 源碼解析類:《深入理解React Hooks:從使用到原理》 # 深入理解React Hooks:從使用到原理?? **背景**: - Hooks解決了Class組件的哪些問題? - 為什么不能在循環/條件中調用Hooks??? **核心原理**:### 1. Hooks鏈表 React內部維護一個單向鏈表:fiber.memoizedSta…

【云原生】Docker 部署 Elasticsearch 9 操作詳解

目錄 一、前言 二、Elasticsearch 9 新特性介紹 2.1 基于 Lucene 10 重大升級 2.2 Better Binary Quantization(BBQ) 2.3 Elastic Distributions of OpenTelemetry(EDOT) 2.4 LLM 可觀測性 2.5 攻擊發現與自動導入 2.6 ES|QL 增強 2.7 語義檢索 三、基于Docker部署…

uview-ui使用u-search搜索框

1、效果圖 2、帶地址搜索框&#xff0c;在微信小程序線上需要開啟地圖定位接口&#xff0c;若沒有權限則顯示不了城市名&#xff0c;注意事項參考uniapp相關地圖 API調用-CSDN博客 <template><view><u-sticky offset-top"-1"><u-search v-mode…

Elasticsearch+Logstash+Kibana部署

目錄 一、實驗準備 1.下載安裝 2.下載java 2.同步主機系統時間 二、部署 1.部署elasticsearch 修改 /etc/elasticsearch/elasticsearch.yml 配置文件 修改 /etc/hosts/ 文件 啟動elasticsearch 查看是否啟動進程netstat -antptu | grep java 2.部署logstash 進入/et…

TEngine學習

關于靜態類中的靜態變量賦值&#xff1a; public static class ActorEventDefine{public static readonly int ScoreChange RuntimeId.ToRuntimeId("ActorEventDefine.ScoreChange");public static readonly int GameOver RuntimeId.ToRuntimeId("ActorEventD…

獵板:在 5G 與 AI 時代,印制線路板如何滿足高性能需求

5G 與 AI 技術的深度融合&#xff0c;推動電子設備向高速傳輸、高算力、高集成方向發展&#xff0c;印制線路板&#xff08;PCB&#xff09;作為核心載體&#xff0c;其性能直接決定終端設備的運行效率與可靠性。獵板 PCB 聚焦 5G 通信的高頻需求與 AI 算力的密集需求&#xff…

教你如何借助AI精讀文獻

目錄1. 原文2. 對文獻有一個快速的理解3. 專業術語解讀4. 解答疑問5. 借助AI翻譯摘要和引言部分5.1 **摘要 (Abstract)**5.2 **引言 (Introduction)**6. 介紹論文中的“Stack-Propagation”7. 查閱論文里的參考文獻&#xff0c;看看他是如何在Introduction中引述研究進展文獻&a…

FastAdmin框架超級管理員密碼重置與常規admin安全機制解析-卓伊凡|大東家

FastAdmin框架超級管理員密碼重置與常規admin安全機制解析-卓伊凡|大東家我們可以看到admin賬戶是不允許直接修改的&#xff0c;這也是目前fastadmin 框架不允許的&#xff0c;那么如何處理一、FastAdmin超級管理員密碼重置方法當FastAdmin的超級管理員密碼忘記或需要重置時&am…

我做的基礎服務項目,是如何實現 API 安全與限流的(短信、郵件、文件上傳、釘釘通知)

我做的基礎服務項目&#xff0c;是如何實現 API 安全與限流的&#xff08;短信、郵件、文件上傳、釘釘通知&#xff09;一、背景 最近我做了一個基礎服務項目&#xff0c;主要對外提供短信、郵件、文件上傳和釘釘通知等基礎功能。這些接口是多個業務系統都要調用的&#xff0c;…

(Python)類和類的方法(基礎教程介紹)(Python基礎教程)

源代碼&#xff1a;class Students:stats"大學"def __init__(self,name,age,sex,credit):self.namenameself.ageageself.sexsexself.creditcreditdef tell(self):return f"{self.name}說&#xff1a;你好"class Teachers(Students):stats"教師"d…

網絡智能體研究綜述

網絡智能體研究綜述1.什么是網絡智能體1.1.核心特征1.2.分類方式1.2.1.按功能定位1.2.2. 按網絡結構1.2.3.按應用場景1.3.典型應用場景1.4.技術基礎1.5.發展趨勢與挑戰1.5.1.發展趨勢1.5.2.核心挑戰2.網絡智能體盤點3.阿里的WebSailor3.1.WebSailor的主要功能和技術特點3.2.技術…

git 介紹與使用教程

Git 是一個 分布式版本控制系統&#xff0c;每個開發者都有一個完整的本地倉庫&#xff08;包含完整歷史記錄&#xff09;&#xff0c;而遠程倉庫&#xff08;如 GitHub、GitLab、Gitee&#xff09;是團隊共享的中央倉庫。它們的關系如下&#xff1a;本地倉庫&#xff08;Local…

[AI風堇]基于ChatGPT3.5+科大訊飛錄音轉文字API+GPT-SOVITS的模擬情感實時語音對話項目

[AI風堇]最近利用工作日的晚間和周末時間&#xff0c;我完成了一個有趣的Python編程小項目。這個項目的靈感來源于上個月在B站看到的"科技怪咖"UP主分享的一個視頻&#xff0c;視頻中展示了一個名為"DataMagic"的自動化數據處理工具&#xff0c;能夠智能分…

物聯網-規則引擎的定義

構建物聯網系統中的規則引擎是一個系統性的工程&#xff0c;它需要處理來自海量設備的實時數據流&#xff0c;并根據預定義的邏輯觸發動作。以下是構建一個高效、可靠、可擴展的物聯網規則引擎的關鍵步驟和考慮因素&#xff1a; 核心目標 實時性&#xff1a; 快速處理設備事件并…

SIMATIC WinCC Unified 使用 KPI 優化流程

大家好&#xff0c;我是東哥說-MES基本知識 33.1 KPI組態簡介現有工廠結構表示在面向對象的組態中定義標準化 KPI 概念的起點。 可通過在工廠視圖中用作實例的工廠對象類型來映射工廠的各組件。在“性能指 標”(Performance indicators) 全局編輯器中&#xff0c;可定義全局操作…

機器學習-多重線性回歸和邏輯回歸

目錄 1. 多重線性回歸 1.1 多元線性回歸 1.2 向量化&#xff08;矢量化&#xff09; 1.3 多元線性回歸的梯度下降算法 1.4 正規方程 2. 特征縮放 2.1 特征縮放 2.2 檢查梯度下降是否收斂 2.3 學習率的選擇 2.4 特征工程 2.5 多項式回歸 3. 邏輯回歸 3.1 Motivatio…

編程思想:程序自身的模型/函數模型硬件標準如何實現

前言前面提到過寫程序的過程:根據各種需求,構建程序模型(邏輯模型),再用代碼實現.本貼關于程序自身的模型以及函數模型,以及推導硬件標準從邏輯到代碼的思路.程序自身的模型如圖應用APP接受輸入---鼠標動作,鍵盤輸入的字符等,得到結果---畫面,顯示數據等.工具包括框架和編程語言…

基于JAVA Spring Boot物理實驗考核系統設計與實現 (文檔+源碼)

目錄 一.研究目的 二.需求分析 三.數據庫設計 四.系統頁面展示 五.源碼獲取方式 一.研究目的 信息數據的處理完全依賴人工進行操作&#xff0c;會耗費大量的人工成本&#xff0c;特別是面對大量的數據信息時&#xff0c;傳統人工操作不僅不能對數據的出錯率進行保證&…

【國內電子數據取證廠商龍信科技】安卓鏡像提取與解析

前言隨著智能手機更新迭代越來越快&#xff0c;手機廠家對手機系統安全性要求也越來越嚴格。系統安全性提高對公民的隱私是一件好事&#xff0c;但是對于取證行業確實一個大難題&#xff0c;手機系統安全性的提高意味著我們能對犯罪嫌疑人手機的提取數據和恢復數據越來越少&…