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
javaReactiveMongoDslConfiguration.java
java適配器中連接的範圍
@Document / 集合名稱
使用 ReactiveMongoTemplate#getCollectionName(...)。
@Id / @Field / 自定義轉換
使用 MongoConverter 進行實體 ↔ Document 轉換。
反應式審計
將 beforePersist(...) 連接到 ReactiveBeforeConvertCallback,則在 save() 系列中應用反應式審計回調。
ReactiveAfterSaveCallback
在寫入成功後可以在 afterPersist(...) 中調用。
Spring QueryMapper
不適用。DSL 字串欄位路徑基於實際 MongoDB 文檔欄位名稱。
Spring DataAccessException
不會自動轉換。實際操作由反應式流驅動程式執行。
使用 @Field 的情況
實體儲存/查詢轉換應用 Spring 映射,但 DSL 條件的字串路徑不會經過 Spring QueryMapper。不過,準確的 id 路徑片段會根據 DSL 自身規則正規化為 _id。