Spring Integration
Conecta el mapeo, la nomenclatura de colecciones y el ciclo de vida reactivo de ReactiveMongoTemplate al adaptador MongoExecutionContext sin arrastrar Spring Data MongoDB como dependencia principal.
Spring Data MongoDB es mantenido por la aplicación.
build.gradle
textLa biblioteca principal no depende directamente de Spring Data MongoDB. Para usar la configuración de ReactiveMongoTemplate de aplicaciones Spring existentes, se proporciona un adaptador MongoExecutionContext en la capa de aplicación.
Adaptador SpringReactiveMongoExecutionContext
SpringReactiveMongoExecutionContext.java
javaEn la implementación real, se añaden las importaciones necesarias de Spring/MongoDB a la clase anterior. La clave es conectar la lectura/escritura de entidades a MongoConverter, el nombre de la colección a ReactiveMongoTemplate, y el inicio de sesión al MongoClient correspondiente.
Registro de Resolver y Bean DSL
MongoTemplateNameResolver.java
javaReactiveMongoDslConfiguration.java
javaAlcance conectado en el adaptador
@Document / nombre de colección
Se utiliza ReactiveMongoTemplate#getCollectionName(...).
@Id / @Field / conversiones personalizadas
Se utiliza MongoConverter para la conversión entre entidad ↔ Document.
Auditoría reactiva
Al conectar beforePersist(...) a ReactiveBeforeConvertCallback, se aplica el callback de auditoría reactiva en la serie de save().
ReactiveAfterSaveCallback
Se puede llamar en afterPersist(...) después de un éxito de escritura.
Spring QueryMapper
No se aplica. La ruta del campo de cadena DSL se basa en el nombre del campo del documento MongoDB real.
Spring DataAccessException
No se convierte automáticamente. La operación real es realizada por el Reactive Streams Driver.
Cuando se utiliza @Field
La conversión de almacenamiento/búsqueda de entidades aplica el mapeo de Spring, pero la ruta de cadena de las condiciones DSL no pasa por QueryMapper de Spring. Sin embargo, el segmento de ruta id exacto se normaliza a _id según las reglas del propio DSL.