我的文件庫

多根目錄側邊欄

flex-layout

  • Getting Started

  • Guides

  • Reference

typed-rx-http

  • Getting Started

  • Guides

  • Reference

global-rx-state

  • Getting Started

  • Guides

  • Reference

webflux-fe-dev-assistant

reactive-mongo-dsl

Spring Integration

不將 Spring Data MongoDB 作為核心依賴,將 ReactiveMongoTemplate 的映射、集合命名和反應式生命週期連接到 MongoExecutionContext 適配器。


Spring Data MongoDB 由應用程式維護
build.gradle
text

核心庫不直接依賴於 Spring Data MongoDB。要使用現有 Spring 應用程式的 ReactiveMongoTemplate 設定,需在應用層提供 MongoExecutionContext 適配器。

SpringReactiveMongoExecutionContext 適配器
SpringReactiveMongoExecutionContext.java
java

在實際實現中,向上述類別添加所需的 Spring/MongoDB 匯入。關鍵是將實體的讀取/寫入連接到 MongoConverter,將集合名稱連接到 ReactiveMongoTemplate,並將會話啟動連接到相應的 MongoClient

註冊 Resolver 和 DSL Bean
MongoTemplateNameResolver.java
java
ReactiveMongoDslConfiguration.java
java
適配器中連接的範圍

@Document / 集合名稱

使用 ReactiveMongoTemplate#getCollectionName(...)

@Id / @Field / 自定義轉換

使用 MongoConverter 進行實體 ↔ Document 轉換。

反應式審計

beforePersist(...) 連接到 ReactiveBeforeConvertCallback,則在 save() 系列中應用反應式審計回調。

ReactiveAfterSaveCallback

在寫入成功後可以在 afterPersist(...) 中調用。

Spring QueryMapper

不適用。DSL 字串欄位路徑基於實際 MongoDB 文檔欄位名稱。

Spring DataAccessException

不會自動轉換。實際操作由反應式流驅動程式執行。

使用 @Field 的情況
java

實體儲存/查詢轉換應用 Spring 映射,但 DSL 條件的字串路徑不會經過 Spring QueryMapper。不過,準確的 id 路徑片段會根據 DSL 自身規則正規化為 _id

Spring 交易和 DSL 交易是分開的
© 2026 Byeolnaerim. 版權所有。介紹隱私政策