Java學習手冊:Spring 中常用的注解

Spring 中常用的注解

一、組件注解

  • @Component :用于標記一個類為 Spring 管理的 Bean,是 Spring 的基本組件注解。Spring 會通過類路徑掃描自動檢測并注冊標記了 @Component 的類為 Bean。
  • @Service :是 @Component 的派生注解,用于標記服務層類,表示該類是一個業務邏輯組件。
  • @Repository :是 @Component 的派生注解,用于標記數據訪問層類,表示該類是一個數據訪問組件,通常用于 DAO(Data Access Object)類。
  • @Controller :是 @Component 的派生注解,用于標記控制層類,表示該類是一個 Web 控制器組件,通常用于 Spring MVC 中的控制器類。

二、依賴注入注解

  • @Autowired :用于自動注入依賴。Spring 會自動查找匹配的 Bean 并注入到指定的字段、構造方法或 setter 方法中。如果存在多個同類型的 Bean,可以通過 @Qualifier 來指定注入的具體 Bean。
  • @Qualifier :用于指定注入的具體 Bean,當存在多個同類型的 Bean 時,可以通過 @Qualifier 來指定注入哪一個 Bean。它通常與 @Autowired 一起使用。
  • @Resource :也是用于依賴注入的注解,它與 @Autowired 類似,但 @Resource 默認按照名稱進行注入,如果找不到匹配的 Bean,則按照類型進行注入。

三、配置注解

  • @Configuration :用于標記一個配置類,表示該類是一個 Spring 配置類,可以替代傳統的 XML 配置文件。
  • @Bean :用于在配置類的方法上定義 Bean。被 @Bean 注解的方法會返回一個 Bean 實例,Spring 會自動注冊該 Bean 到 IoC 容器中。
  • @Import :用于導入其他配置類,可以將其他配置類中的 Bean 定義引入到當前配置類中。
  • @PropertySource :用于指定屬性文件的位置,可以加載.properties 文件中的配置屬性到 Spring 的環境變量中。
  • @Value :用于注入配置文件中的屬性值到字段中。可以通過 @Value 注解將配置文件中的屬性值綁定到 Bean 的字段上。

四、AOP 注解

  • @Aspect :用于標記一個切面類,表示該類是一個 AOP 切面,包含通知和切入點的定義。
  • @Pointcut :用于定義切入點表達式,指定哪些連接點匹配該切入點。
  • @Before :用于定義前置通知,表示在連接點之前執行的通知方法。
  • @AfterReturning :用于定義后置通知,表示在連接點正常返回后執行的通知方法。
  • @AfterThrowing :用于定義異常通知,表示在連接點拋出異常后執行的通知方法。
  • @After :用于定義最終通知,表示在連接點執行完成后(無論是否拋出異常)執行的通知方法。
  • @Around :用于定義環繞通知,表示在連接點之前和之后都執行的通知方法,可以手動控制連接點的執行。

五、MVC 注解

  • @Controller :用于標記控制層類,表示該類是一個 Web 控制器組件,用于處理 HTTP 請求。
  • @RequestMapping :用于映射 HTTP 請求到處理方法上。可以通過 URL 模式、HTTP 方法等方式來指定請求的映射規則。
  • @GetMapping :是 @RequestMapping 的派生注解,專門用于映射 HTTP GET 請求。
  • @PostMapping :是 @RequestMapping 的派生注解,專門用于映射 HTTP POST 請求。
  • @PutMapping :是 @RequestMapping 的派生注解,專門用于映射 HTTP PUT 請求。
  • @DeleteMapping :是 @RequestMapping 的派生注解,專門用于映射 HTTP DELETE 請求。
  • @RequestParam :用于綁定 HTTP 請求參數到方法參數上。可以指定參數是否必填、默認值等。
  • @RequestBody :用于將 HTTP 請求體綁定到方法參數上,通常用于處理 JSON 或 XML 格式的請求數據。
  • @ResponseBody :用于將方法的返回值作為 HTTP 響應體返回給客戶端,通常用于返回 JSON 或 XML 格式的數據。
  • @RestController :是 @Controller@ResponseBody 的組合注解,用于標記 RESTful 風格的控制器類,表示該類中的所有方法的返回值都會作為 HTTP 響應體返回給客戶端。

六、事務注解

  • @Transactional :用于聲明式事務管理,可以標注在類或方法上。標注了 @Transactional 的方法會在執行時自動開啟事務,并在方法執行完成后根據執行結果提交或回滾事務。

七、示例代碼

以下是一些常用注解的示例代碼:

  • 組件注解示例
@Component
public class Car {// 類內容
}@Service
public class UserService {// 類內容
}@Repository
public class UserRepository {// 類內容
}@Controller
public class UserController {// 類內容
}
  • 依賴注入注解示例
@Service
public class UserService {@Autowired@Qualifier("userRepository")private UserRepository userRepository;
}@Repository
public class UserRepository {// 類內容
}
  • AOP 注解示例
@Aspect
@Component
public class LogAspect {@Pointcut("execution(* com.example.service.*.*(..))")public void servicePointcut() {}@Before("servicePointcut()")public void beforeLog(JoinPoint joinPoint) {System.out.println("方法執行前:" + joinPoint.getSignature().getName());}
}
  • MVC 注解示例
@RestController
@RequestMapping("/api/users")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User getUser(@PathVariable Long id) {return userService.getUserById(id);}@PostMappingpublic User createUser(@RequestBody User user) {return userService.createUser(user);}
}
  • 事務注解示例
@Service
public class UserService {@Autowiredprivate UserRepository userRepository;@Transactionalpublic void transferMoney(Account fromAccount, Account toAccount, Double amount) {userRepository.decreaseBalance(fromAccount, amount);userRepository.increaseBalance(toAccount, amount);}
}

八、總結

Spring 提供了大量的注解來簡化開發和配置工作。通過使用這些注解,開發者可以更加方便地定義 Bean、管理依賴關系、配置 AOP、開發 Web 應用以及進行事務管理等。掌握這些常用注解的使用方法,可以提高開發效率,使代碼更加簡潔和直觀。在實際開發中,合理運用 Spring 的注解功能,可以構建出更加高效、可維護的 Spring 應用。

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

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

相關文章

前端跨域問題詳解:原因、解決方案與最佳實踐

引言 在現代Web開發中,跨域問題是前端工程師幾乎每天都會遇到的挑戰。隨著前后端分離架構的普及和微服務的發展,跨域請求變得愈發常見。本文將深入探討跨域問題的本質、各種解決方案以及在實際開發中的最佳實踐。 一、什么是跨域問題? 1.1…

[計算機網絡]物理層

文章目錄 物理層的概述與功能傳輸介質雙絞線:分類:應用領域: 同軸電纜:分類: 光纖:分類: 無線傳輸介質:無線電波微波:紅外線:激光: 物理層設備中繼器:放大器:集線器(Hub)&#xff1a…

大連理工大學選修課——機器學習筆記(9):線性判別式與邏輯回歸

線性判別式與邏輯回歸 概述 判別式方法 產生式模型需要計算輸入、輸出的聯合概率 需要知道樣本的概率分布,定義似然密度的隱式參數也稱為基于似然的分類 判別式模型直接構造判別式 g i ( x ∣ θ i ) g_i(x|\theta_i) gi?(x∣θi?),顯式定義判別式…

OpenCV 圖像處理核心技術 (第二部分)

歡迎來到 OpenCV 圖像處理的第二部分!在第一部分,我們學習了如何加載、顯示、保存圖像以及訪問像素等基礎知識。現在,我們將深入探索如何利用 OpenCV 提供的強大工具來修改和分析圖像。 圖像處理是計算機視覺領域的基石。通過對圖像進行各種…

【鴻蒙HarmonyOS】一文詳解華為的服務卡片

7.服務卡片 1.什么是卡片 Form Kit(卡片開發服務)提供一種界面展示形式,可以將應用的重要信息或操作前置到服務卡片(以下簡稱“卡片”),以達到服務直達、減少跳轉層級的體驗效果。卡片常用于嵌入到其他應…

探索目標檢測:邊界框與錨框的奧秘

筆者在2022年開始學習目標檢測的時候,對各種框的概念那是相當混淆,比如: 中文名詞:邊界框、錨框、真實框、預測框等英文名詞:BoundingBox、AnchorBox、Ground Truth等 同一個英文名詞比如BoundingBox翻譯成中文也有多個…

[原創](現代Delphi 12指南):[macOS 64bit App開發]: [1]如何使用原生NSAlert消息框 (runModal模式)

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 開發工具: Visual Studio、Delphi、XCode、…

LangChain的向量RAG與MCP在意圖識別的主要區別

LangChain的向量RAG與MCP在意圖識別實現上的區別主要體現在技術路徑、流程設計以及應用場景三個方面: 1. 技術路徑差異 LangChain向量RAG 語義相似度驅動:通過用戶輸入的原始查詢與向量化知識庫的語義匹配實現意圖識別。例如,用戶提問"…

[特殊字符] Spring Cloud 微服務配置統一管理:基于 Nacos 的最佳實踐詳解

在微服務架構中,配置文件眾多、管理復雜是常見問題。本文將手把手演示如何將配置集中托管到 Nacos,并在 Spring Cloud Alibaba 項目中實現統一配置管理 自動刷新機制。 一、為什么要使用 Nacos 統一配置? 傳統方式下,每個服務都…

2025平航杯—團隊賽

2025平航杯團隊賽 計算機取證 分析起早王的計算機檢材,起早王的計算機插入過USB序列號是什么(格式:1)分析起早王的計算機檢材,起早王的便簽里有幾條待干(格式:1)分析起早王的計算機檢材,起早王的計算機默認瀏覽器是什…

JSON-RPC 2.0 規范中文版——無狀態輕量級遠程過程調用協議

前言 JSON-RPC是一種簡單、輕量且無狀態的遠程過程調用(RPC)協議,它允許不同系統通過標準化的數據格式進行通信。自2010年由JSON-RPC工作組發布以來,已成為眾多應用中實現遠程交互的基礎協議之一。本規范主要表達了JSON-RPC 2.0版…

微控制器編程 | ISP、IAP 與 ICP 的原理與比較

注:英文引文,機翻未校。 圖片清晰度限于引文原狀。 Introduction to Programming of Microcontroller: ISP, IAP and ICP 微控制器編程介紹:ISP、IAP 和 ICP Date: 30-11-2022 1. What is Microcontroller Programming 什么是微控制器編…

Allegro23.1新功能之新型via structure創建方法操作指導

Allegro23.1新功能之新型via structure創建方法操作指導 Allegro升級到了23.1后,支持創建新型via structure 通過直接定義參數來生成 具體操作如下 打開軟件,選擇 Allegro PCB Designer

IBM WebSphere Application Server 7.0/8.5.5證書過期問題處理

證書過期錯誤日志: [3/14/16 7:22:20:332 PDT] 0000007d WSX509TrustMa E CWPKI0312E: The certificate with subject DN CNMXSYSTEMS, OUctgNodeCell01, OUctgNode01, OIBM, CUS has an end date Mon Jan 11 11:17:18 PST 2016 which is no longer valid. [3/14/…

select,poll,epoll區別聯系

selsect,poll,epoll區別聯系 目錄 一、區別 二、聯系 select、poll 和 epoll 都是在 Linux 系統中用于實現 I/O 多路復用的機制,它們的主要目的是讓程序能夠同時監控多個文件描述符,以判斷是否有事件發生,從而提高 I/O 操作的效率。 一、區…

curl和wget的使用介紹

目錄 一、curl 和 wget 區別 二、wget的使用 2.1 參數說明 2.2 wget 使用示例 三、curl的使用 3.1 參數說明 3.2 curl使用示例 一、curl 和 wget 區別 wget 和 curl 都可以下載內容。它們都可以向互聯網發送請求并返回請求項,可以是文件、圖片或者是其他諸如…

日語學習-日語知識點小記-構建基礎-JLPT-N4階段(12): ておき ます

日語學習-日語知識點小記-構建基礎-JLPT-N4階段(12): ておき ます。 1、前言(1)情況說明(2)工程師的信仰 2、知識點(1)~ておき ます。(2&#x…

高質量水火焰無損音效包

今天設計寶藏給大家分享的是Cinematic Elements: Fire & Water音頻資源庫包含大量高質量的火焰和水的聲音效果。它具有非常強烈的個性特征和次世代的音效。火焰和水是兩個令人印象深刻而 interessing 的元素。它們的表現形式從微小無害到巨大毀滅性都有。因此,它們的聲音特…

畢業論文 | 傳統特征點提取算法與匹配算法對比分析

傳統特征點提取算法與匹配算法對比分析 一、特征點提取算法對比二、特征匹配算法對比三、核心算法原理與公式1. **Harris角點檢測**2. **SIFT描述子生成**3. **ORB描述子**四、完整Matlab代碼示例1. **Harris角點檢測與匹配**2. **SIFT特征匹配(需VLFeat庫)**3. **ORB特征匹配…

【網絡原理】從零開始深入理解HTTP的報文格式(二)

本篇博客給大家帶來的是網絡HTTP協議的知識點, 續上篇文章,接著介紹HTTP的報文格式. 🐎文章專欄: JavaEE初階 🚀若有問題 評論區見 ? 歡迎大家點贊 評論 收藏 分享 如果你不知道分享給誰,那就分享給薯條. 你們的支持是我不斷創作的動力 . 王子,公主請閱…