Spring Integration
将 ReactiveMongoTemplate 的映射、集合命名和反应式生命周期与 MongoExecutionContext 适配器连接,而不引入 Spring Data MongoDB 作为核心依赖。
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
不自动转换。实际操作由 Reactive Streams Driver 执行。
使用 @Field 的情况
实体保存/查询转换应用 Spring 映射,但 DSL 条件的字符串路径不经过 Spring QueryMapper。但准确的 id 路径段会根据 DSL 自身规则规范化为 _id。