Overview
ChangeStreamContext<T> is the main runtime object passed to every handler method (@OnChange, @OnInsert, @OnUpdate, @OnDelete, @OnReplace). It provides access to the event metadata, documents, and runtime actions.
Document access
getFullDocument
Returns the full document after the operation, automatically converted to the requested type using Spring’sMongoConverter.
DELETE operations, the full document is not available and the method returns Optional.empty().
getFullDocumentBeforeChange
Returns the document before the operation, automatically converted using Spring’sMongoConverter. This is useful for comparing old vs. new state (e.g., audit logging, status transition tracking).
@ChangeStream annotation controls how pre-images are requested:
getUpdateDescription
ForUPDATE operations, returns an UpdateDescription describing the modified fields. Returns Optional.empty() for non-UPDATE operations.
UpdateDescription methods
Targeted field changes
hasFieldChanged and getUpdatedFieldValue let you react to specific fields without manually walking the updated-fields map:
"address.city").
Event metadata
TransactionInfo
lsid (logical session id) and txnNumber together for every event in a transaction, or omits both for standalone operations. They’re grouped in a record so handlers cannot observe one without the other; absence is represented by Optional.empty() at the call site. Useful for grouping events of the same transaction — audit logs, aggregation, atomicity-preserving downstream propagation.