Spring Integration
Kết nối mapping, đặt tên collection và vòng đời reactive của ReactiveMongoTemplate mà không kéo Spring Data MongoDB vào phụ thuộc chính.
Spring Data MongoDB được duy trì trong ứng dụng
build.gradle
textThư viện chính không phụ thuộc trực tiếp vào Spring Data MongoDB. Để sử dụng cấu hình ReactiveMongoTemplate của ứng dụng Spring hiện có, cung cấp adapter MongoExecutionContext ở lớp ứng dụng.
Adapter SpringReactiveMongoExecutionContext
SpringReactiveMongoExecutionContext.java
javaTrong triển khai thực tế, thêm các import Spring/MongoDB cần thiết vào lớp trên. Điều cốt lõi là kết nối việc đọc/ghi entity với MongoConverter, tên collection với ReactiveMongoTemplate, và khởi động phiên với MongoClient tương ứng.
Đăng ký Resolver và DSL Bean
MongoTemplateNameResolver.java
javaReactiveMongoDslConfiguration.java
javaPhạm vi kết nối từ Adapter
@Document / tên collection
Sử dụng ReactiveMongoTemplate#getCollectionName(...).
@Id / @Field / chuyển đổi tùy chỉnh
Sử dụng MongoConverter để chuyển đổi giữa entity và Document.
Kiểm toán reactive
Kết nối beforePersist(...) với ReactiveBeforeConvertCallback để áp dụng callback kiểm toán reactive trong chuỗi save().
ReactiveAfterSaveCallback
Có thể gọi trong afterPersist(...) sau khi ghi thành công.
Spring QueryMapper
Không áp dụng. Đường dẫn trường DSL String dựa trên tên trường tài liệu MongoDB thực tế.
Spring DataAccessException
Không tự động chuyển đổi. Thao tác thực tế được thực hiện bởi Reactive Streams Driver.
Khi sử dụng @Field
Mapping Spring được áp dụng cho việc lưu/truy vấn entity, nhưng đường dẫn String của điều kiện DSL không đi qua QueryMapper của Spring. Tuy nhiên, đoạn đường dẫn id chính xác được chuẩn hóa thành _id theo quy tắc của DSL.