Spring / Spring Boot 的@MapperScan 和 @Repository

@MapperScan@Repository 是兩個與數據訪問層相關的注解,它們在功能上有一定的聯系,但也有明顯的區別。

一、相同點

1.?都與數據訪問層相關

  • @MapperScan:用于掃描 MyBatis 的 Mapper 接口。MyBatis 是一個流行的持久層框架,Mapper 接口定義了數據庫操作的方法,@MapperScan 的作用是將這些接口掃描并注冊為 Spring 的 Bean,從而可以在 Spring 應用中方便地使用這些 Mapper。

  • @Repository:用于標注數據訪問層的類,通常用于 DAO(Data Access Object)類。它是一個 Spring 的注解,用于標記一個類是數據訪問層的組件。在 Spring 的上下文中,被 @Repository 標注的類會被注冊為一個 Bean,并且可以享受 Spring 提供的異常處理等功能。

2.?都與 Spring 的 Bean 管理有關

  • 無論是 @MapperScan 還是 @Repository,它們最終的目的都是將相關的類或接口注冊為 Spring 的 Bean。這樣,這些 Bean 就可以在 Spring 的上下文中被管理,并且可以通過依賴注入的方式被其他組件使用。

二、區別

1.?作用對象不同

  • @MapperScan

    • 作用對象:作用于包或類上,用于掃描 MyBatis 的 Mapper 接口。

    • 使用場景:當你使用 MyBatis 作為持久層框架時,需要通過 @MapperScan 來指定 MyBatis 的 Mapper 接口所在的包路徑,Spring 會自動掃描這些接口,并為每個接口創建一個代理對象,這個代理對象就是 Spring 的 Bean。

    • 示例

      @MapperScan("com.example.mapper")
      @SpringBootApplication
      public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
      }

      在這個例子中,Spring 會掃描 com.example.mapper 包下的所有接口,并為每個接口創建一個代理對象。

  • @Repository

    • 作用對象:作用于類上,用于標注數據訪問層的類(通常是 DAO 類)。

    • 使用場景:當你使用傳統的 Spring 數據訪問方式(如 JDBC Template 或 JPA)時,可以使用 @Repository 來標注你的 DAO 類。這樣,Spring 會將這個類注冊為一個 Bean,并且可以享受 Spring 提供的異常處理等功能。

    • 示例

      @Repository
      public class UserDao {public User getUserById(int id) {// 實現數據訪問邏輯}
      }

2.?功能側重點不同

  • @MapperScan

    • 功能側重點:主要功能是掃描 MyBatis 的 Mapper 接口,并為每個接口創建代理對象。這個代理對象會根據 MyBatis 的配置(如 XML 映射文件或注解)來實現具體的數據庫操作。

    • 依賴框架:依賴于 MyBatis 框架。如果沒有使用 MyBatis,@MapperScan 就沒有意義。

  • @Repository

    • 功能側重點:主要功能是標注一個類是數據訪問層的組件,并將這個類注冊為 Spring 的 Bean。它不依賴于具體的持久層框架,可以用于各種數據訪問技術(如 JDBC Template、JPA、MyBatis 等)。

    • 依賴框架:依賴于 Spring 框架。它是一個 Spring 提供的注解,用于統一管理數據訪問層的組件。

3.?使用方式不同

  • @MapperScan

    • 使用方式:通常放在 Spring Boot 的主類或配置類上,指定 MyBatis 的 Mapper 接口所在的包路徑。

    • 示例

      @MapperScan("com.example.mapper")
      @SpringBootApplication
      public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
      }
  • @Repository

    • 使用方式:直接標注在數據訪問層的類上。

    • 示例

      @Repository
      public class UserDao {public User getUserById(int id) {// 實現數據訪問邏輯}
      }

4.?異常處理

  • @MapperScan

    • 異常處理@MapperScan 本身不直接提供異常處理功能。MyBatis 的異常處理主要依賴于 MyBatis 自身的異常處理機制。

  • @Repository

    • 異常處理@Repository 提供了異常處理的功能。當在數據訪問層拋出異常時,Spring 會將這些異常轉換為 Spring 的數據訪問異常(如 DataAccessException),從而使得異常處理更加統一和方便。

5.?與事務管理的配合

  • @MapperScan

    • 事務管理@MapperScan 掃描的 Mapper 接口通常會與事務管理器配合使用。事務管理器可以通過 Spring 的 @Transactional 注解來管理事務,而 @MapperScan 掃描的 Mapper 接口會參與到事務管理中。

  • @Repository

    • 事務管理@Repository 標注的類也可以與事務管理器配合使用。事務管理器可以通過 Spring 的 @Transactional 注解來管理事務,而 @Repository 標注的類會參與到事務管理中。

ok,以上就是本次分享的內容~

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

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

相關文章

全星 研發項目管理APQP 軟件:驅動汽車及制造業研發升級的數字化引擎

全星 APQP 軟件:驅動汽車及制造業研發升級的數字化引擎 在汽車及制造業競爭白熱化的當下,如何高效推進研發項目,同時確保嚴格合規,成為企業亟待解決的難題。 全星研發項目管理 APQP 軟件系統,憑借卓越的功能與顯著優勢…

cadence17.4和16.6同時安裝無法使用的問題

最近在搞這個兩個版本的軟件安裝,針對網上的一些說法: 方法一:先裝17.4再裝16.6,文件放在一個文件夾,打不開,兩個版本都無法使用 方法二:分別安裝,文件路徑放在不同的文件 方案三:修改環境變量,直接使用17.4的 License Manager 這個也無法解決問題。 經過對報錯的問…

(三)鏈式工作流構建——打造智能對話的強大引擎

上一篇:(二)輸入輸出處理——打造智能對話的靈魂 在前兩個階段,我們已經搭建了一個基礎的智能對話,并深入探討了輸入輸出處理的細節。今天,我們將進入智能對話的高級階段——鏈式工作流構建。這一階段的目…

【MATLAB定位例程】TDOA(到達時間差)的chan-tylor,三維環境,附完整代碼

該代碼實現了基于三維空間的動態目標TDOA定位,結合了Chan算法(解析解)與Taylor級數展開法(迭代優化)的雙重優勢。 文章目錄 運行結果MATLAB代碼代碼講解代碼功能概述核心算法原理代碼結構解析可視化與結果分析運行結果 定位示意圖: 三軸狀態曲線: 三軸誤差曲線: MA…

Golang的文件同步與備份

Golang的文件同步與備份 一、Golang介紹 也稱為Go語言,是谷歌開發的一種編程語言,具有高效的并發編程能力和出色的內存管理。由于其快速的編譯速度和強大的標準庫,Golang在網絡應用、云平臺和大數據等領域得到了廣泛應用。 二、文件同步與備份…

ARXML文件解析-2

目錄 1 摘要2 常見ARXML文件注意事項以及常見問題2.1 注意事項2.2 常見問題2.3 答疑 3 ARXML解讀/編輯指南3.1 解讀ARXML文件的步驟3.2 編輯ARXML文件的方法3.3 驗證與調試 4 總結 1 摘要 本文主要對ARXML文件的注意事項、常見問題以及解讀與編輯進行詳細介紹。 上文回顧&…

3535 數組分割

3535 數組分割 ??難度:困難 🌟考點:2023、省賽、動態規劃 📖 📚 import java.util.*;public class Main {static int MOD 1000000007;static int N 1005;public static void main(String[] args) {Scanner sc …

Git操作指南

Git操作指南 1.安裝并配置Git Git官網:https://git-scm.com/downloads 安裝完成后,打開Git Bash,配置Git: git config --global user.email "emailexample.com" git config --global user.name "Your Name&quo…

Linux常用基礎命令應用

目錄 一、文件與目錄操作(12個核心命令)?? ??1. pwd - 顯示當前路徑?? ??2. ls - 查看目錄內容?? ??3. cd - 切換目錄?? ??4. mkdir - 創建目錄?? ??5. touch - 創建文件?? ??6. cp - 復制文件/目錄?? ??7. mv - 移動…

zookeeper基本概念和核心作用

圖片來源: 02-Zookeeper概念_嗶哩嗶哩_bilibili02-Zookeeper概念是黑馬程序員Zookeeper視頻教程,快速入門zookeeper技術的第2集視頻,該合集共計24集,視頻收藏或關注UP主,及時了解更多相關視頻內容。https://www.bilib…

關于HikariDataSource (null)的誤解,順帶提出一種mybaits-Plus mapper映射失敗的容易被忽視的原因

首先探究此問題并無什么實際意義,純屬是個人好奇使然,也順帶熟悉了一下Springboot 數據庫連接的相關問題,本人純小白說的不對的地方懇請大佬指正!! 關于HikariDataSource (null)的誤解 問題的發現 Value("${myba…

Centos7上安裝docker - yum在線的方式

步驟一 : 安裝 yum-utils yum install -y yum-utils步驟二 : 替換docker 的國內的源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo執行完成后,會在 /etc/yum.repos.d/ 目錄下 新增 doc…

250405-VSCode編輯launch.json實現Debug調試Open-WebUI

A. 最終效果 根據__init__.py配置launch.json 根據中utils/chat.py中form_data的messages [{role: user, content: 唐老鴨}],可以找到用戶輸入,進而通過關鍵詞或模型調用的方式,對敏感問題進行特殊處理。 B. 文件配置 launch.json // { // /…

①(PROFINET 轉 Modbus TCP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP協議互轉工業串口網關

型號 協議轉換通信網關 PROFINET 轉 Modbus TCP MS-GW35 概述 MS-GW35 是 PROFINET 和 Modbus TCP 協議轉換網關,為用戶提供一種 PLC擴展的集成解決方案,可以輕松容易將 Modbus TCP 網絡接入 PROFINET 網絡中,方便擴展,不受限制…

分治-歸并排序-逆序對問題

目錄 1.升序(以右邊的合并組為基準) 2.降序(以左邊的合并組為基準) 3.逆對序--固定下標 1.升序(以右邊的合并組為基準) 找出左邊有多少個數比我(nums[right])大 應該在每一次合并之前,進行…

(四)數據檢索與增強生成——讓對話系統更智能、更高效

上一篇:(三)鏈式工作流構建——打造智能對話的強大引擎 在前三個階段,我們已經搭建了一個基礎的智能對話,并深入探討了輸入輸出處理和鏈式工作流構建的細節。今天,我們將進入智能對話系統的高級階段——數…

JVM虛擬機篇(二):深入剖析Java與元空間(MetaSpace)

這里寫目錄標題 JVM虛擬機篇(二):深入剖析Java與元空間(MetaSpace)一、引言二、全面認識Java2.1 Java的起源與發展歷程2.2 Java的特性2.2.1 簡單性2.2.2 面向對象2.2.3 平臺無關性2.2.4 健壯性2.2.5 安全性2.2.6 多線程…

如何查看 MySQL 的磁盤空間使用情況:從表級到數據庫級的分析

在日常數據庫管理中,了解每張表和每個數據庫占用了多少磁盤空間是非常關鍵的。這不僅有助于我們監控數據增長,還能為性能優化提供依據。 Google Gemini中國版調用Google Gemini API,中國大陸優化,完全免費!https://ge…

[Windows] XHS-Downloader V2.4 | 小紅書無水印下載工具 支持多平臺批量采集

[Windows] XHS-Downloader 鏈接:https://pan.xunlei.com/s/VON4ygFN1JcyzLJJIOqIpqodA1?pwdsinu# XHS-Downloader 是一款開源免費的小紅書內容下載工具,支持無水印視頻 / 圖文提取、多鏈接批量處理及賬號作品采集。其核心優勢包括: 全平臺…

6.1 寬度優先搜索算法(BFS)

寬度優先搜索算法(BFS Breadth first search) 又稱廣度優先搜索,這種搜索是逐層的,搜索完上層,才會搜索下一層,直到找到目標節點。 搜索過程如圖中箭頭方向: 【例如】 八數碼難題:利用空格的移動&#xff…