Spring Boot 集成 MongoDB 時自動創建的核心 Bean 的詳細說明及表格總結

以下是 Spring Boot 集成 MongoDB 時自動創建的核心 Bean 的詳細說明及表格總結:


核心 Bean 列表及詳細說明

1. MongoClient
  • 類型com.mongodb.client.MongoClient
  • 作用
    MongoDB 客戶端核心接口,負責與 MongoDB 服務器建立連接、執行命令和操作。
  • 自動配置來源
    根據 spring.data.mongodb 配置項(如 urihostport)創建。
    默認連接 localhost:27017/test(若未指定 uri)。
  • 自定義方式
    通過覆蓋 MongoClient Bean 或配置 spring.data.mongodb.uri
2. MongoDatabaseFactory
  • 類型org.springframework.data.mongodb.core.MongoDatabaseFactory
  • 實現類SimpleMongoClientDatabaseFactory
  • 作用
    提供 MongoDatabase 實例的工廠,用于連接到指定的數據庫。
  • 依賴
    依賴 MongoClientspring.data.mongodb.database 配置。
3. MongoTemplate
  • 類型org.springframework.data.mongodb.core.MongoTemplate
  • 作用
    Spring Data MongoDB 的核心操作類,提供對 MongoDB 的高級操作(CRUD、查詢、聚合、映射等)。
  • 依賴
    依賴 MongoDatabaseFactoryMongoConverter
  • 默認行為
    • 支持 @Document@Field 等注解驅動的映射。
    • 自動創建索引(若 spring.data.mongodb.auto-index-creationtrue)。
4. MongoConverter
  • 類型org.springframework.data.mongodb.core.convert.MongoConverter
  • 實現類MappingMongoConverter
  • 作用
    將 Java 對象與 MongoDB 文檔(BSON)之間進行轉換,處理字段映射、類型轉換等。
  • 核心功能
    • 處理 @Id@Field 注解的字段映射。
    • 支持自定義 Converter(通過 spring.data.mongodb.converters 配置)。
5. MongoMappingContext
  • 類型org.springframework.data.mongodb.core.mapping.MongoMappingContext
  • 作用
    定義 MongoDB 實體類的映射信息,包括字段名稱、類型、索引等。
    @Document@Indexed 等注解驅動。
  • 默認行為
    • 自動掃描帶有 @Document 注解的類。
    • 支持 @Transient 忽略字段。
6. MongoRepository 接口的實現
  • 類型org.springframework.data.mongodb.repository.MongoRepository 的實現類
  • 前提條件
    需啟用 spring.data.mongodb.repositories.enabled=true
  • 自動創建的 Bean
    • 所有繼承自 MongoRepository 的接口(如 CrudRepositoryPagingAndSortingRepository)的實現類(如 SimpleMongoRepository)。
  • 訪問方式
    直接通過 @Autowired 注入自定義的 Repository 接口。
7. MongoIndexOperations
  • 類型org.springframework.data.mongodb.core.index.MongoIndexOperations
  • 作用
    提供對集合索引的管理(創建、刪除、檢查)。
  • 訪問方式
    通過 MongoTemplate.indexOps("collectionName") 獲取。
8. 異常翻譯器(Exception Translater)
  • 類型org.springframework.data.mongodb.core.MongoExceptionTranslator
  • 作用
    將 MongoDB 驅動的原生異常(如 MongoException)轉換為 Spring 的 DataAccessException
9. 健康檢查 Bean
  • 類型org.springframework.boot.actuate.health.MongoHealthIndicator
  • 作用
    Spring Boot Actuator 的健康檢查組件,驗證 MongoDB 連接狀態。

表格總結:自動創建的 MongoDB 相關 Bean

Bean 名稱類型作用是否可自定義覆蓋
mongoMongoClientMongoDB 客戶端核心接口,負責連接和操作數據庫。
mongoDatabaseFactoryMongoDatabaseFactory提供 MongoDatabase 實例的工廠。
mongoTemplateMongoTemplate提供 MongoDB 高級操作(CRUD、查詢、映射等)。
mongoConverterMappingMongoConverter負責 Java 對象與 MongoDB 文檔的轉換。
mongoMappingContextMongoMappingContext定義實體類的映射規則(字段、注解等)。
MongoRepository 實現類SimpleMongoRepository提供 Repository 接口的實現(如 save()find())。是(通過自定義 Repository)
mongoIndexOperationsMongoIndexOperations管理集合的索引操作。
mongoExceptionTranslatorMongoExceptionTranslator將 MongoDB 異常轉換為 Spring 異常。
mongoHealthIndicatorMongoHealthIndicator提供 MongoDB 連接狀態的健康檢查。

關鍵點說明

  1. 核心 Bean 依賴關系

    • MongoTemplate 依賴 MongoDatabaseFactoryMongoConverter
    • MongoConverter 依賴 MongoMappingContext
    • 所有操作最終通過 MongoClient 與 MongoDB 服務器通信。
  2. 自定義配置方式

    • 覆蓋 MongoClient

      @Bean
      public MongoClient mongoClient() {return MongoClients.create("mongodb://user:pass@host:27017/mydb");
      }
      
    • 自定義 MongoTemplate

      @Bean
      public MongoTemplate mongoTemplate(MongoDatabaseFactory factory, MongoConverter converter) {return new MongoTemplate(factory, converter);
      }
      
    • 自定義轉換器

      @Bean
      public MongoCustomConversions conversions() {List<Converter<?, ?>> converters = new ArrayList<>();converters.add(new MyCustomConverter());return new MongoCustomConversions(converters);
      }
      
  3. 擴展性

    • 可通過 @EnableMongoAuditing 啟用審計功能(記錄創建/修改時間)。
    • 可通過 @EnableMongoRepositories 指定 Repository 接口的掃描路徑。

總結

Spring Boot 自動配置的 MongoDB 相關 Bean 主要圍繞 連接、映射、操作、異常處理 四個核心功能展開。開發者可通過覆蓋這些 Bean 或配置屬性(如 spring.data.mongodb.*)靈活調整行為,滿足不同場景需求。

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

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

相關文章

113. 在 Vue 3 中使用 OpenLayers 實現鼠標移動顯示坐標信息

? 寫在前面 在地圖類項目開發中&#xff0c;一個常見需求就是&#xff1a;實時獲取用戶鼠標在地圖上的經緯度坐標&#xff0c;并展示在地圖上。 本文將通過一個簡單的案例&#xff0c;手把手帶大家在 Vue 3 項目中集成 OpenLayers 地圖庫&#xff0c;并實現以下功能&#xf…

docker配置redis容器時搭載哨兵節點的情況下配置文件docker-compose.yml示例

1.配置數據節點&#xff08;主從節點&#xff09; version: 3.7 services:master:image: redis:5.0.9container_name: redis-masterrestart: alwayscommand: redis-server --appendonly yesports:- 6379:6379slave1:image: redis:5.0.9container_name: redis-slave1restart: a…

C++建造者模式進化論

還在為 C 對象那 長得令人發指 的構造函數參數列表抓狂嗎&#xff1f;&#x1f92f; 是不是經常在 int hp, int mp, int strength, int faith... 這樣的參數“連連看”中迷失自我&#xff0c;一不小心就把法力值傳給了血量&#xff0c;或者力量值填到了信仰欄&#xff1f;&…

在Ubuntu內網環境中為Gogs配置HTTPS訪問(通過Apache反向代理使用IP地址)

一、準備工作 確保已安裝Gogs并運行在HTTP模式(默認端口3000) 確認服務器內網IP地址(如192.168.1.100) 二、安裝Apache和必要模塊 sudo apt update sudo apt install apache2 -y sudo a2enmod ssl proxy proxy_http rewrite headers 三、創建SSL證書 1. 創建證書存儲目錄…

數據中臺、BI業務訪談(二):組織架構梳理的坑

這是數據中臺、BI業務訪談系列的第二篇文章&#xff0c;在上一篇文章中&#xff0c;我重點介紹了在給企業的業務部門、高層管理做業務訪談之前我們要做好行業、業務知識的功課。做好這些功課之后&#xff0c;就到了實際的訪談環節了。 業務訪談關鍵點 那么在具體業務訪談的時…

spark集群,Stand alone,Hadoop集群有關啟動問題

你的問題是因為 start-all.sh 是 Hadoop 的啟動腳本&#xff08;用于啟動 HDFS 和 YARN&#xff09;&#xff0c;而不是 Spark 的啟動腳本。而你已經通過 start-cluster.sh 啟動了 Hadoop 相關服務&#xff08;HDFS/YARN&#xff09;&#xff0c;再次執行 start-all.sh 會導致服…

Kotlin 通用請求接口設計:靈活處理多樣化參數

在 Kotlin 中設計一個通用的 ControlParams 類來處理不同的控制參數&#xff0c;有幾種常見的方法&#xff1a;方案1&#xff1a;使用密封類&#xff08;Sealed Class&#xff09; sealed class ControlParamsdata class LightControlParams(val brightness: Int,val color: S…

aspark 配置2

編寫Hadoop集群啟停腳本 1.建立新文件&#xff0c;編寫腳本程序 在hadoop101中操作&#xff0c;在/root/bin下新建文件&#xff1a;myhadoop&#xff0c;輸入如下內容&#xff1a; 2.分發執行權限 保存后退出&#xff0c;然后賦予腳本執行權限 [roothadoop101 ~]$ chmod x /r…

Webstorm 使用搜不到node_modules下的JS內容 TS項目按Ctrl無法跳轉到函數實現

將node_modules標記為不排除&#xff0c;此時要把內存改大&#xff0c;不然webstorm中途建立索引時&#xff0c;會因為內存不足&#xff0c;導致索引中途停止&#xff0c;造成后續搜索不出來 更改使用內存設置 內存調為4096 若出現搜不出來js內容時&#xff0c;請直接重啟下該項…

vue-element-plus-admin的安裝

文檔鏈接&#xff1a;開始 | vue-element-plus-admin 之前嘗試按照官方文檔來安裝&#xff0c;運行npm run dev命令卻不能正常打開訪問瀏覽器&#xff0c;換一個方式 首先在目錄下打開命令窗口 1、克隆項目 從 GitHub 獲取代碼 # clone 代碼 git clone https://github.com…

【windows10】基于SSH反向隧道公網ip端口實現遠程桌面

【windows10】基于SSH反向隧道公網ip端口實現遠程桌面 1.背景2.SSH反向隧道3.遠程連接電腦 1.背景 ?Windows 10遠程桌面協議的簡稱是RDP&#xff08;Remote Desktop Protocol&#xff09;?。 RDP是一種網絡協議&#xff0c;允許用戶遠程訪問和操作另一臺計算機。 遠程桌面功…

軟考系統架構設計師之大數據與人工智能筆記

一、大數據架構設計 1. 核心概念與挑戰 大數據特征&#xff1a;體量大&#xff08;Volume&#xff09;、多樣性&#xff08;Variety&#xff09;、高速性&#xff08;Velocity&#xff09;、價值密度低&#xff08;Value&#xff09;。傳統數據庫問題&#xff1a;數據過載、性…

【數據結構 · 初階】- 單鏈表

目錄 一.相關指針知識點 二.鏈表 1.為什么學了順序表還要學鏈表 2.優點 三.實現 1.鏈表的打印 —— 理解鏈表結構 (2) 物理結構圖 2.鏈表的尾插 —— 入門 錯誤寫法&#xff1a;tail ! NULL 總結&#xff1a; 正確代碼物理圖解&#xff1a; (2) 尾插整體代碼 (思考…

按鍵消抖(用狀態機實現)

基于狀態機的設計代碼 module key_filter(clk,rst,key,key_p_flag,key_r_flag,key_state);input clk,rst;input key;output reg key_p_flag;output reg key_r_flag;output reg key_state;reg [1:0]r_key; //后面用來判斷什么時候pedge&#xff0c;什么時候nedgealways…

大數據(7.2)Kafka萬億級數據洪流下的架構優化實戰:從參數調優到集群治理

目錄 一、海量數據場景下的性能之殤1.1 互聯網企業的數據增長曲線1.2 典型性能瓶頸分析 二、生產者端極致優化2.1 批量發送黃金法則2.1.1 分區選擇算法對比 2.2 序列化性能突破 三、消費者端并發藝術3.1 多線程消費模式演進3.1.1 消費組Rebalance優化 3.2 位移管理高階技巧 四、…

MyBatis深度解析與實戰指南:細節完整,從入門到精通

MyBatis深度解析與實戰指南&#xff1a;細節完整&#xff0c;從入門到精通 整理這份筆記&#xff0c;是因為學習 MyBatis 時發現很多教程要么只講基礎 CRUD&#xff0c;要么直接跳到 Spring 整合&#xff0c;對 MyBatis 核心特性講解不全面&#xff0c;基礎部分也不夠完整。實…

【科學技術部政務服務平臺-用戶注冊/登錄安全分析報告】

前言 由于網站注冊入口容易被黑客攻擊&#xff0c;存在如下安全問題&#xff1a; 暴力破解密碼&#xff0c;造成用戶信息泄露短信盜刷的安全問題&#xff0c;影響業務及導致用戶投訴帶來經濟損失&#xff0c;尤其是后付費客戶&#xff0c;風險巨大&#xff0c;造成虧損無底洞…

【Audio開發三】音頻audio中幀frameSize ,周期大小periodsize,緩沖區buffer原理詳解以及代碼流程分析

一、基礎概述 在分析獲取最小幀數前&#xff0c;我們先來了解幾個相關的概念。 1&#xff0c;幀 幀&#xff08;frame&#xff09;&#xff1a;表示一個完整的聲音單元&#xff0c;所謂的聲音單元是指一個采樣樣本。如果是雙聲道&#xff0c;那么一個完整的聲音單元就是 2 個樣…

K8S學習之基礎七十五:istio實現灰度發布

istio實現灰度發布 上傳鏡像到harbor 創建兩個版本的pod vi deployment-v1.yaml apiVersion: apps/v1 kind: Deployment metadata:name: appv1labels:app: v1 spec:replicas: 1selector:matchLabels:app: v1apply: canarytemplate:metadata:labels:app: v1apply: canaryspec…

C++藍橋杯填空題(攻克版)

片頭 嗨~小伙伴們&#xff0c;咱們繼續攻克填空題&#xff0c;先把5分拿到手~ 第1題 數位遞增的數 這道題&#xff0c;需要我們計算在整數 1 至 n 中有多少個數位遞增的數。 什么是數位遞增的數呢&#xff1f;一個正整數如果任何一個數位不大于右邊相鄰的數位。比如&#xf…