From daef8b6e8e3736edc654fc1a282f4be351d407fe Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 20 Oct 2022 15:51:56 +0200 Subject: [PATCH] Add missing reflection hints for generated cglib proxies. Closes: #4217 --- .../data/mongodb/aot/LazyLoadingProxyAotProcessor.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/LazyLoadingProxyAotProcessor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/LazyLoadingProxyAotProcessor.java index 97ea07710..83abac1df 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/LazyLoadingProxyAotProcessor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/LazyLoadingProxyAotProcessor.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Set; import org.springframework.aot.generate.GenerationContext; +import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.TypeReference; import org.springframework.core.ResolvableType; import org.springframework.core.annotation.AnnotatedElementUtils; @@ -74,7 +75,13 @@ class LazyLoadingProxyAotProcessor { generationContext.getRuntimeHints().proxies().registerJdkProxy(interfaces.toArray(Class[]::new)); } else { - LazyLoadingProxyFactory.resolveProxyType(field.getType(), () -> LazyLoadingInterceptor.none()); + + Class proxyClass = LazyLoadingProxyFactory.resolveProxyType(field.getType(), + () -> LazyLoadingInterceptor.none()); + + // see: spring-projects/spring-framework/issues/29309 + generationContext.getRuntimeHints().reflection().registerType(proxyClass, + MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.DECLARED_FIELDS); } }); }