Spring Integration
Spring Data MongoDB wird nicht als Kernabhängigkeit eingebunden, sondern verbindet das Mapping, die Sammlungsbenennung und den reaktiven Lebenszyklus von ReactiveMongoTemplate mit dem MongoExecutionContext-Adapter.
Spring Data MongoDB wird von der Anwendung verwaltet.
build.gradle
textDie Kernbibliothek hat keine direkte Abhängigkeit von Spring Data MongoDB. Um die ReactiveMongoTemplate-Einstellungen einer bestehenden Spring-Anwendung zu verwenden, wird im Anwendungsschicht der MongoExecutionContext-Adapter bereitgestellt.
SpringReactiveMongoExecutionContext-Adapter
SpringReactiveMongoExecutionContext.java
javaIn der tatsächlichen Implementierung werden die erforderlichen Spring/MongoDB-Imports in die obige Klasse eingefügt. Der Kern besteht darin, das Lesen/Schreiben von Entitäten mit MongoConverter, den Sammlungsnamen mit ReactiveMongoTemplate und den Sitzungsstart mit dem entsprechenden MongoClient zu verbinden.
Registrierung von Resolver und DSL-Bean
MongoTemplateNameResolver.java
javaReactiveMongoDslConfiguration.java
javaBereich, der im Adapter verbunden wird
@Document / Sammlungsname
Verwenden Sie ReactiveMongoTemplate#getCollectionName(...).
@Id / @Field / benutzerdefinierte Konvertierungen
Verwenden Sie MongoConverter für die Umwandlung zwischen Entität und Document.
Reaktive Prüfung
Wenn beforePersist(...) mit ReactiveBeforeConvertCallback verbunden wird, wird der reaktive Prüfungs-Callback in der save()-Reihe angewendet.
ReactiveAfterSaveCallback
Kann nach einem erfolgreichen Schreiben in afterPersist(...) aufgerufen werden.
Spring QueryMapper
Wird nicht angewendet. Der DSL-Stringfeldpfad basiert auf den tatsächlichen MongoDB-Dokumentfeldnamen.
Spring DataAccessException
Wird nicht automatisch konvertiert. Die tatsächliche Operation wird vom Reactive Streams Driver durchgeführt.
Wenn @Field verwendet wird
Für die Speicherung/Abfrage von Entitäten wird das Spring-Mapping angewendet, jedoch durchläuft der String-Pfad der DSL-Bedingung nicht den Spring QueryMapper. Der genaue id-Pfadsegment wird jedoch gemäß den DSL-Regeln in _id normalisiert.