spring的常用注解匯總

在 Spring 和 Spring Boot 框架中,有許多核心注解被廣泛應用。以下是常用的關鍵注解分類詳解:


一、組件聲明與依賴注入

注解作用示例
@Component通用組件聲明 (Bean 的泛化形式)@Component public class ServiceImpl {...}
@Service標記服務層(業務邏輯層)組件@Service public class UserService {...}
@Repository標記持久層(DAO 層)組件,自動處理數據庫異常@Repository public class UserDao {...}
@Controller標記 Web 控制器組件@Controller public class UserCtrl {...}
@RestController@Controller + @ResponseBody(REST API 專用)@RestController public class ApiCtrl {...}
@Autowired自動按類型依賴注入@Autowired private UserService service;
@Qualifier按名稱指定注入的 Bean@Qualifier("mainDB") DataSource ds;
@ResourceJSR-250 標準注入(按名稱)@Resource(name="slaveDB") DataSource ds;

二、配置與屬性管理

注解作用
@Configuration聲明配置類(替代 XML 配置)
@Bean聲明方法返回對象作為 Spring Bean
@Value注入外部配置值${property.key}
@ConfigurationProperties批量綁定配置文件到 POJO(比 @Value 更結構化)
@PropertySource加載自定義 properties 文件
@EnableConfigurationProperties啟用配置屬性綁定

三、Web 與請求處理

注解HTTP 方法作用
@RequestMapping通用映射類/方法級別的請求映射
@GetMappingGET簡化版 GET 請求映射
@PostMappingPOST簡化版 POST 請求映射
@PutMappingPUT簡化版 PUT 請求映射
@DeleteMappingDELETE簡化版 DELETE 請求映射
@PatchMappingPATCH簡化版 PATCH 請求映射
@RequestParam-獲取 URL 查詢參數
@PathVariable-獲取 URL 路徑變量
@RequestBody-接收 HTTP 請求體(如 JSON)
@ResponseBody-直接返回數據(非視圖)
@CookieValue-獲取 Cookie 值
@SessionAttribute-訪問會話屬性

四、事務管理

注解作用
@Transactional聲明式事務管理(類/方法級)
@EnableTransactionManagement在配置類啟用注解驅動的事務管理

五、測試相關

注解作用
@SpringBootTest啟動完整的 Spring Boot 測試環境
@WebMvcTest專注于 MVC 控制器的測試(不加載完整上下文)
@DataJpaTest專注于 JPA 測試(使用內存數據庫)
@MockBean在測試上下文中注入 Mock 對象
@Test標記測試方法(JUnit)

六、AOP 面向切面編程

注解作用
@Aspect聲明切面類
@Before方法執行前切入
@After方法執行后切入(無論是否異常)
@AfterReturning方法正常返回后切入
@AfterThrowing方法拋出異常后切入
@Around環繞增強(最強大的通知類型)
@Pointcut定義可重用的切入點表達式

七、條件化配置 (Spring Boot)

注解作用
@ConditionalOnProperty當配置屬性存在且匹配時生效
@ConditionalOnBean當指定 Bean 存在時生效
@ConditionalOnMissingBean當指定 Bean 不存在時生效
@ConditionalOnClass當指定類在 classpath 存在時生效
@ConditionalOnWebApplication當是 Web 應用時生效

八、調度與異步

注解作用
@Scheduled定時任務調度(支持 cron 表達式)
@EnableScheduling啟用定時任務支持
@Async異步執行方法
@EnableAsync啟用異步執行支持

九、緩存管理

注解作用
@Cacheable緩存方法結果
@CachePut更新緩存
@CacheEvict清除緩存
@EnableCaching啟用緩存注解支持

十、其他實用注解

注解作用
@Lazy延遲初始化 Bean
@Primary指定同類型 Bean 的優先注入選項
@Scope定義 Bean 作用域(singleton, prototype 等)
@Profile按環境激活配置(dev, test, prod)
@Valid觸發 JSR-303 Bean 校驗(配合 @NotNull 等)

📌 最佳實踐建議

  • 優先使用 @ConfigurationProperties 替代分散的 @Value
  • REST API 開發首選 @RestController + HTTP 方法注解
  • 數據庫操作使用 @Transactional 確保事務完整性
  • 生產環境配置 @Profile("prod") 分離環境參數

這些注解共同構成了 Spring 生態的基石,通過聲明式編程極大簡化了企業級應用開發。掌握它們是高效使用 Spring 框架的關鍵。

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

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

相關文章

Claude4、GPT4、Kimi K2、Gemini2.5、DeepSeek R1、Code Llama等2025主流AI編程大模型多維度對比分析報告

2025主流AI編程大模型多維度對比分析報告引言:AI編程大模型的技術格局與選型挑戰一、核心模型概覽:技術定位與市場份額1.國際第一梯隊(1)Claude 4系列(Anthropic)(2)GPT-4.1&#xf…

Overleaf中下載.aux和.bbl文件

有些會議提交終稿的時候,可能會讓上傳.bbl和.aux文件,但是使用Overleaf下載下來的壓縮包中缺沒有這些文件在網上搜了一下都是用的舊版的Overleaf的教程,或者教程比較繁瑣,其實新版的Overleaf也可以直接下載 打開你的論文編譯好&am…

uniapp寫app做測試手機通知欄展示內容

uniapp寫app做測試手機通知欄展示內容 以下代碼:只是個簡單測試能不能給手機發送消息,能不能引導打開通知權限,能不能進行跳轉的功能, 增加 notify.js 以下文件 // 模擬本地通知功能 export function showNotification() {// 1. 檢查通知…

分布式云計算:未來計算架構的全新演進

隨著信息技術的不斷發展,尤其是云計算技術的飛速進步,企業和個人對計算資源的需求已經從傳統的單一數據中心向更為靈活、可擴展的分布式架構轉變。分布式云計算作為一種新興的云計算模型,旨在將計算資源和數據存儲分布在多個地理位置上,從而提供更加高效、安全和可靠的服務…

2025年海外短劇獨立站開發:H5+PC端雙平臺技術實踐與增長策略

引言在全球化內容消費浪潮下,海外短劇市場正經歷爆發式增長。據DataEye《2025H1海外微短劇行業數據報告》顯示,2025年海外短劇市場規模預計突破45億美元,其中東南亞、拉美等新興市場貢獻超30%增量。本文將以某頭部短劇平臺的雙平臺開發實踐為…

OpenAI發布ChatGPT Agent,AI智能體迎來關鍵變革

注:此文章內容均節選自充電了么創始人,CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》(跟我一起學人工智能)【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

企業級安全威脅檢測與響應(EDR/XDR)架構設計

在這個網絡威脅如洪水猛獸的時代,企業的安全防護不能再像守城門的老大爺一樣只會喊"什么人?口令!"了。我們需要的是一套像FBI一樣具備全方位偵察能力的智能防護系統。 📋 文章目錄 1. 什么是EDR/XDR?別被這…

Stream流-Java

Stream流的作用&#xff1a;結合了Lambda表達式&#xff0c;簡化集合&#xff0c;數組的操作Stream流的使用步驟&#xff1a;1. 先得到一條Stream流&#xff08;流水線&#xff09;&#xff0c;并把數據放上去獲取方式方法名說明單列集合default Stream<E> stream()Colle…

Leetcode 327. 區間和的個數

1.題目基本信息 1.1.題目描述 給你一個整數數組 nums 以及兩個整數 lower 和 upper 。求數組中&#xff0c;值位于范圍 [lower, upper] &#xff08;包含 lower 和 upper&#xff09;之內的 區間和的個數 。 區間和 S(i, j) 表示在 nums 中&#xff0c;位置從 i 到 j 的元素…

MinIO 版本管理實踐指南(附完整 Go 示例)

? 前言 在構建企業級對象存儲系統時,“對象的版本管理”是一個關鍵特性。MinIO 作為一款高性能、Kubernetes 原生的 S3 兼容對象存儲系統,也支持強大的版本控制功能。 本文將通過 Go 示例代碼 + 實操講解 的形式,手把手帶你掌握 MinIO 的版本控制能力,包括開啟版本控制、…

數組toString方法及類型檢測修復方案

在 JavaScript 中&#xff0c;數組的 toString() 方法被覆蓋&#xff08;重寫&#xff09;為返回數組元素的逗號分隔字符串&#xff0c;而不是原始的 [object Array] 類型標識。以下是詳細解釋和修復方案&#xff1a;問題原因Array.prototype.toString 被覆蓋數組繼承自 Object…

mysql索引底層B+樹

B樹勝出的關鍵特性&#xff1a;矮胖樹結構&#xff1a;3-4層高度即可存儲2000萬條記錄&#xff08;假設每頁存1000條&#xff09; 葉子鏈表&#xff1a;所有數據存儲在葉子節點&#xff0c;并通過雙向鏈表連接 非葉導航&#xff1a;非葉子節點僅存儲鍵值&#xff0c;不保存數據…

AI開放課堂:釘釘MCP開發實戰

我們正處在AI技術爆發的時代&#xff0c;也處于企業數字化蓬勃發展的時代。如何利用AI技術&#xff0c;突破模型自身知識的局限&#xff0c;安全、高效地與外部世界連接和交互&#xff0c;是當前所有AI開發者在企業數字化中面臨的問題之一。 MCP&#xff08;Model Context Prot…

DigitalOcean 一鍵模型部署,新增支持百度開源大模型ERNIE 4.5 21B

使用過DigitalOcean GPU Droplet 服務器的用戶應該對我們的一鍵模型部署功能不陌生。DigitalOcean 的一鍵模型部署 (1-Click Models) 功能是 DO 為開發者和企業提供的一種便捷方式&#xff0c;用于快速部署和運行預訓練的生成式 AI 模型&#xff0c;尤其是大型語言模型 (LLM)。…

【嵌入式面試】嵌入式筆試與面試寶典(offer必來)

&#x1f48c; 所屬專欄&#xff1a;【嵌入式面試】 &#x1f600; 作??者&#xff1a;蘭舟比特 &#x1f43e; &#x1f680; 個人簡介&#xff1a;熱愛開源系統與嵌入式技術&#xff0c;專注 Linux、網絡通信、編程技巧、面試總結與軟件工具分享&#xff0c;持續輸出實用干…

企業級數據分析創新實戰:基于表格交互與智能分析的雙引擎架構

引言&#xff1a;數字化轉型中數據協同困境與系統融合挑戰 在數字化轉型實踐中&#xff0c;企業普遍面臨數據系統與業務運營的協同困境&#xff0c;主要表現為數據處理平臺與核心業務流程的架構隔離、分析成果與決策閉環的價值斷層、以及雙重數據維護帶來的資源損耗。這種系統…

openbmc 日志系統繼續分析

1.說明 1.1 總體說明 本節是繼: https://blog.csdn.net/wit_yuan/article/details/147142407?spm=1011.2415.3001.5331 后的繼續分析的文檔。 該篇內容主要目的是分析整個openbmc的日志系統。 注意解讀文檔: https://github.com/openbmc/docs/blob/master/designs/event-l…

【JIRA小白如何使用它進行bug管理】

JIRA小白如何使用它進行bug管理 提示&#xff1a;入職一般來說&#xff0c;公司會提供賬號&#xff0c;不需要部署如何提bug&#xff1a; JIRA有兩種提交方式 在執行測試用例中在bug管理項目中新建提bug建議或者注意事項&#xff1a; 標題&#xff1a;執行完A之后&#xff0c;發…

陪診小程序系統開發:開啟醫療陪護新時代

在快節奏的現代生活中&#xff0c;人們面臨著各種各樣的壓力&#xff0c;健康問題也日益凸顯。當生病就醫時&#xff0c;尤其是對于老年人、孕婦、殘障人士等特殊群體&#xff0c;獨自前往醫院往往會遇到諸多困難&#xff0c;如不熟悉醫院流程、行動不便、心理上感到孤獨無助等…