Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@

package org.springframework.boot.data.mongodb.autoconfigure;

import java.lang.reflect.Method;
import java.util.Optional;

import com.mongodb.ClientSessionOptions;
import com.mongodb.MongoDriverInformation;
import com.mongodb.reactivestreams.client.ClientSession;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoDatabase;
Expand All @@ -27,6 +29,7 @@
import org.jspecify.annotations.Nullable;
import reactor.core.publisher.Mono;

import org.springframework.boot.SpringBootVersion;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
Expand Down Expand Up @@ -76,10 +79,16 @@
@Import(DataMongoConfiguration.class)
public final class DataMongoReactiveAutoConfiguration {

private static final MongoDriverInformation DRIVER_INFO = MongoDriverInformation.builder()
.driverName("spring-boot")
.driverVersion(SpringBootVersion.getVersion())
.build();

@Bean
@ConditionalOnMissingBean(ReactiveMongoDatabaseFactory.class)
SimpleReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory(MongoProperties properties, MongoClient mongo,
MongoConnectionDetails connectionDetails) {
appendMetadata(mongo);
String database = properties.getDatabase();
if (database == null) {
database = connectionDetails.getConnectionString().getDatabase();
Expand All @@ -88,6 +97,16 @@ SimpleReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory(MongoProperties
return new SimpleReactiveMongoDatabaseFactory(mongo, database);
}

private static void appendMetadata(MongoClient mongoClient) {
try {
Method method = mongoClient.getClass().getMethod("appendMetadata", MongoDriverInformation.class);
method.invoke(mongoClient, DRIVER_INFO);
}
catch (Exception ex) {
// appendMetadata not available in this driver version — skip silently
}
}

@Bean
@ConditionalOnMissingBean(ReactiveMongoOperations.class)
ReactiveMongoTemplate reactiveMongoTemplate(ReactiveMongoDatabaseFactory reactiveMongoDatabaseFactory,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@

package org.springframework.boot.data.mongodb.autoconfigure;

import java.lang.reflect.Method;

import com.mongodb.MongoDriverInformation;
import com.mongodb.client.MongoClient;

import org.springframework.boot.SpringBootVersion;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
import org.springframework.boot.mongodb.autoconfigure.MongoConnectionDetails;
Expand All @@ -43,9 +47,15 @@
@ConditionalOnSingleCandidate(MongoClient.class)
class MongoDatabaseFactoryConfiguration {

private static final MongoDriverInformation DRIVER_INFO = MongoDriverInformation.builder()
.driverName("spring-boot")
.driverVersion(SpringBootVersion.getVersion())
.build();

@Bean
MongoDatabaseFactorySupport<?> mongoDatabaseFactory(MongoClient mongoClient, MongoProperties properties,
MongoConnectionDetails connectionDetails) {
appendMetadata(mongoClient);
String database = properties.getDatabase();
if (database == null) {
database = connectionDetails.getConnectionString().getDatabase();
Expand All @@ -54,4 +64,14 @@ MongoDatabaseFactorySupport<?> mongoDatabaseFactory(MongoClient mongoClient, Mon
return new SimpleMongoClientDatabaseFactory(mongoClient, database);
}

private static void appendMetadata(MongoClient mongoClient) {
try {
Method method = mongoClient.getClass().getMethod("appendMetadata", MongoDriverInformation.class);
method.invoke(mongoClient, DRIVER_INFO);
}
catch (Exception ex) {
// appendMetadata not available in this driver version — skip silently
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import com.mongodb.MongoDriverInformation;
import org.jspecify.annotations.Nullable;

import org.springframework.boot.SpringBootVersion;

/**
* Base class for setup that is common to MongoDB client factories.
*
Expand Down Expand Up @@ -60,6 +62,7 @@ private void customize(Builder builder) {
private MongoDriverInformation driverInformation() {
return MongoDriverInformation.builder(MongoDriverInformation.builder().build())
.driverName("spring-boot")
.driverVersion(SpringBootVersion.getVersion())
.build();
}

Expand Down
Loading