From d16f60cab5b764a9facf472597e5346d14084b43 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 22 Oct 2025 15:26:15 +0200 Subject: [PATCH] Deprecate Observability API in favor of native MongoDB Java Driver solution. --- .../observability/ContextProviderFactory.java | 2 ++ ...efaultMongoHandlerObservationConvention.java | 2 ++ .../observability/MapRequestContext.java | 2 ++ .../observability/MongoHandlerContext.java | 2 ++ .../MongoHandlerObservationConvention.java | 2 ++ .../mongodb/observability/MongoKeyName.java | 2 ++ .../mongodb/observability/MongoObservation.java | 2 ++ .../MongoObservationCommandListener.java | 2 ++ .../data/mongodb/observability/Observer.java | 2 ++ .../mongodb/observability/package-info.java | 1 + .../ROOT/pages/observability/observability.adoc | 17 +++++++++++++++++ 11 files changed, 36 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/ContextProviderFactory.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/ContextProviderFactory.java index 4b37225b5..340b5aaca 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/ContextProviderFactory.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/ContextProviderFactory.java @@ -40,7 +40,9 @@ import com.mongodb.reactivestreams.client.ReactiveContextProvider; * * @author Mark Paluch * @since 3.0 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) public class ContextProviderFactory { private static final boolean SYNCHRONOUS_PRESENT = ClassUtils diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/DefaultMongoHandlerObservationConvention.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/DefaultMongoHandlerObservationConvention.java index 3d3742d57..df932f88d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/DefaultMongoHandlerObservationConvention.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/DefaultMongoHandlerObservationConvention.java @@ -29,7 +29,9 @@ import com.mongodb.event.CommandStartedEvent; * @author Mark Paluch * @author Michal Domagala * @since 4.0 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) class DefaultMongoHandlerObservationConvention implements MongoHandlerObservationConvention { @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MapRequestContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MapRequestContext.java index 11c229350..17bb04491 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MapRequestContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MapRequestContext.java @@ -28,7 +28,9 @@ import com.mongodb.RequestContext; * @author Marcin Grzejszczak * @author Greg Turnquist * @since 4.0.0 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) record MapRequestContext(Map map) implements RequestContext { public MapRequestContext() { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerContext.java index cab9cd5cb..5c794eb9c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerContext.java @@ -40,7 +40,9 @@ import com.mongodb.event.CommandSucceededEvent; * @author Greg Turnquist * @author Mark Paluch * @since 4.0 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) public class MongoHandlerContext extends SenderContext { /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerObservationConvention.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerObservationConvention.java index 7d1100c58..067ae40de 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerObservationConvention.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoHandlerObservationConvention.java @@ -23,7 +23,9 @@ import io.micrometer.observation.ObservationConvention; * * @author Greg Turnquist * @since 4 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) public interface MongoHandlerObservationConvention extends ObservationConvention { @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoKeyName.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoKeyName.java index 5fd15c6f5..2a5b9f58d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoKeyName.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoKeyName.java @@ -32,7 +32,9 @@ import org.springframework.util.StringUtils; * * @author Mark Paluch * @since 4.4.9 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) record MongoKeyName(String name, boolean required, Function valueFunction) implements KeyName { /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservation.java index 464fb036a..7defbbde0 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservation.java @@ -34,7 +34,9 @@ import com.mongodb.event.CommandEvent; * @author Marcin Grzejszczak * @author Greg Turnquist * @since 4.0 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) enum MongoObservation implements ObservationDocumentation { /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservationCommandListener.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservationCommandListener.java index fcd477804..85733f15d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservationCommandListener.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/MongoObservationCommandListener.java @@ -41,7 +41,9 @@ import com.mongodb.event.CommandSucceededEvent; * @author Greg Turnquist * @author François Kha * @since 4.0 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) public class MongoObservationCommandListener implements CommandListener { private static final Log log = LogFactory.getLog(MongoObservationCommandListener.class); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/Observer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/Observer.java index ba46c60c6..37981f822 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/Observer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/Observer.java @@ -31,7 +31,9 @@ import org.jspecify.annotations.Nullable; * * @author Mark Paluch * @since 4.4.9 + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ +@Deprecated(since = "5.0", forRemoval = true) class Observer { private final List keyValues = new ArrayList<>(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/package-info.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/package-info.java index d6319e5f4..786b39ef0 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/package-info.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/observability/package-info.java @@ -1,5 +1,6 @@ /** * Infrastructure to provide driver observability using Micrometer. + * @deprecated since 5.0 in favor of native MongoDB Java Driver observability support. */ @org.jspecify.annotations.NullMarked package org.springframework.data.mongodb.observability; diff --git a/src/main/antora/modules/ROOT/pages/observability/observability.adoc b/src/main/antora/modules/ROOT/pages/observability/observability.adoc index 8a9b0a1ee..daf835542 100644 --- a/src/main/antora/modules/ROOT/pages/observability/observability.adoc +++ b/src/main/antora/modules/ROOT/pages/observability/observability.adoc @@ -3,6 +3,23 @@ [[mongodb.observability]] = Observability +[WARNING] +==== +Spring Data MongoDB's flavor of observability has been deprecated and is scheduled for removal in favor of the observability support being directly built into the MongoDB Java Driver which can be configured as outlined below: + +[source,java] +---- +@Bean +MongoClientSettingsBuilderCustomizer mongoDbObservabilitySettings(ObservationRegistry registry) { + return (clientSettingsBuilder) -> { + clientSettingsBuilder.observabilitySettings(ObservabilitySettings.micrometerBuilder() + .observationRegistry(observationRegistry) + .build()); + }; +} +---- +==== + Spring Data MongoDB currently has the most up-to-date code to support Observability in your MongoDB application. These changes, however, haven't been picked up by Spring Boot (yet). Until those changes are applied, if you wish to use Spring Data MongoDB's flavor of Observability, you must carry out the following steps.