From 88ea57f2be4268377f336da16956a6fe96ac64f0 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 27 Oct 2022 17:14:28 +0200 Subject: [PATCH] Provide native hints to create transaction proxies at runtime. Closes: #4221 --- .../data/mongodb/aot/MongoRuntimeHints.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/MongoRuntimeHints.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/MongoRuntimeHints.java index c97a0f07f..f649851c7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/MongoRuntimeHints.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/MongoRuntimeHints.java @@ -32,6 +32,7 @@ import org.springframework.data.mongodb.core.mapping.event.ReactiveAfterSaveCall import org.springframework.data.mongodb.core.mapping.event.ReactiveBeforeConvertCallback; import org.springframework.data.mongodb.core.mapping.event.ReactiveBeforeSaveCallback; import org.springframework.lang.Nullable; +import org.springframework.util.ClassUtils; /** * {@link RuntimeHintsRegistrar} for repository types and entity callbacks. @@ -51,6 +52,16 @@ class MongoRuntimeHints implements RuntimeHintsRegistrar { builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_PUBLIC_METHODS)); + if (ClassUtils.isPresent("org.springframework.aop.SpringProxy", classLoader)) { + + hints.proxies().registerJdkProxy(TypeReference.of(com.mongodb.client.MongoDatabase.class), + TypeReference.of("org.springframework.aop.SpringProxy"), + TypeReference.of("org.springframework.core.DecoratingProxy")); + hints.proxies().registerJdkProxy(TypeReference.of(com.mongodb.client.MongoCollection.class), + TypeReference.of("org.springframework.aop.SpringProxy"), + TypeReference.of("org.springframework.core.DecoratingProxy")); + } + if (isReactorPresent()) { hints.reflection()