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 / カスタム変換
エンティティ ↔ Document 変換にMongoConverterを使用します。
リアクティブ監査
beforePersist(...)をReactiveBeforeConvertCallbackに接続すると、save()系列でリアクティブ監査コールバックが適用されます。
ReactiveAfterSaveCallback
書き込み成功後、afterPersist(...)で呼び出すことができます。
Spring QueryMapper
適用されません。DSL文字列フィールドパスは実際のMongoDBドキュメントフィールド名に基づいています。
Spring DataAccessException
自動変換しません。実際の操作はReactive Streams Driverが実行します。
@Fieldを使用する場合
エンティティの保存/取得変換にはSpringマッピングが適用されますが、DSL条件の文字列パスはSpring QueryMapperを通過しません。ただし、正確なidパスセグメントはDSL自体の規則により_idに正規化されます。