From 6f11c08064d03019f2989527b9dcf41fb6b93077 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 9 Apr 2025 08:41:01 +0200 Subject: [PATCH] Retrieve MongoDB driver version reflectively. To avoid inlining of the final/static version value, we're using reflection to look up the version value. Closes #4937 --- .../data/mongodb/util/MongoClientVersion.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/MongoClientVersion.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/MongoClientVersion.java index 991a7292f..8fc4b108f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/MongoClientVersion.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/MongoClientVersion.java @@ -15,9 +15,12 @@ */ package org.springframework.data.mongodb.util; +import java.lang.reflect.Field; + import org.springframework.data.util.Version; import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; +import org.springframework.util.ReflectionUtils; import com.mongodb.internal.build.MongoDriverVersion; @@ -96,8 +99,9 @@ public class MongoClientVersion { if (ClassUtils.isPresent("com.mongodb.internal.build.MongoDriverVersion", classLoader)) { try { - return Version.parse(MongoDriverVersion.VERSION); - } catch (IllegalArgumentException exception) { + Field field = ReflectionUtils.findField(MongoDriverVersion.class, "VERSION"); + return field != null ? Version.parse("" + field.get(null)) : null; + } catch (ReflectiveOperationException | IllegalArgumentException exception) { // well not much we can do, right? } }