diff --git a/pom.xml b/pom.xml
index f929e4aa5..4f25baa78 100644
--- a/pom.xml
+++ b/pom.xml
@@ -90,6 +90,7 @@
4.0.3
0.21.3
0.14.1
+ 4.0.0
@@ -277,6 +278,11 @@
archunit-junit5
${archunit-junit5.version}
+
+ org.mongodb
+ mongodb-driver-reactivestreams
+ ${mongodb-driver-reactivestreams.version}
+
diff --git a/spring-cloud-sleuth-autoconfigure/pom.xml b/spring-cloud-sleuth-autoconfigure/pom.xml
index 6f3aa9fc0..734ef1bd9 100644
--- a/spring-cloud-sleuth-autoconfigure/pom.xml
+++ b/spring-cloud-sleuth-autoconfigure/pom.xml
@@ -375,6 +375,11 @@
awaitility
test
+
+ org.mongodb
+ mongodb-driver-reactivestreams
+ test
+
diff --git a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/mongodb/BraveMongoDbAutoConfiguration.java b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/mongodb/BraveMongoDbAutoConfiguration.java
index eb2cf20fc..0f9d424b8 100644
--- a/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/mongodb/BraveMongoDbAutoConfiguration.java
+++ b/spring-cloud-sleuth-autoconfigure/src/main/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/mongodb/BraveMongoDbAutoConfiguration.java
@@ -25,6 +25,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoClientSettingsBuilderCustomizer;
@@ -41,6 +42,7 @@ import org.springframework.context.annotation.Configuration;
* @since 3.0.0
*/
@Configuration(proxyBeanMethods = false)
+@ConditionalOnMissingClass("com.mongodb.reactivestreams.client.MongoClient")
@ConditionalOnBean(Tracing.class)
@AutoConfigureAfter(BraveAutoConfiguration.class)
@AutoConfigureBefore(MongoAutoConfiguration.class)
diff --git a/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/mongodb/BraveMongoDbAutoConfigurationAsyncDriverTest.java b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/mongodb/BraveMongoDbAutoConfigurationAsyncDriverTest.java
new file mode 100644
index 000000000..120b69f49
--- /dev/null
+++ b/spring-cloud-sleuth-autoconfigure/src/test/java/org/springframework/cloud/sleuth/autoconfig/brave/instrument/mongodb/BraveMongoDbAutoConfigurationAsyncDriverTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2013-2021 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.cloud.sleuth.autoconfig.brave.instrument.mongodb;
+
+import org.junit.jupiter.api.Test;
+
+import org.springframework.boot.autoconfigure.AutoConfigurations;
+import org.springframework.boot.test.context.FilteredClassLoader;
+import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+import org.springframework.cloud.sleuth.autoconfig.brave.BraveAutoConfiguration;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * @author Chintan Radia
+ */
+class BraveMongoDbAutoConfigurationAsyncDriverTest {
+
+ @Test
+ void should_not_auto_configure_brave_mongo_db() {
+ new ApplicationContextRunner()
+ .withConfiguration(
+ AutoConfigurations.of(BraveAutoConfiguration.class, BraveMongoDbAutoConfiguration.class))
+ .run(context -> assertThat(context).doesNotHaveBean(BraveMongoDbAutoConfiguration.class));
+ }
+
+ @Test
+ void should_auto_configure_brave_mongo_db() {
+ new ApplicationContextRunner()
+ .withClassLoader(new FilteredClassLoader("com.mongodb.reactivestreams.client.MongoClient"))
+ .withConfiguration(
+ AutoConfigurations.of(BraveAutoConfiguration.class, BraveMongoDbAutoConfiguration.class))
+ .run(context -> assertThat(context).hasSingleBean(BraveMongoDbAutoConfiguration.class));
+ }
+
+}
+