From 51875cdf5fa1ee0fafad85876cd14e0ea422f003 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 3 Oct 2022 16:43:43 +0200 Subject: [PATCH] Defensive early initialization of CGLIB method proxies (for AOT processing) Method proxies might not actually be used later on, so failure is not fatal. See gh-29107 --- .../org/springframework/cglib/proxy/MethodProxy.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/cglib/proxy/MethodProxy.java b/spring-core/src/main/java/org/springframework/cglib/proxy/MethodProxy.java index afa6a2582b3..446cd09b9b9 100644 --- a/spring-core/src/main/java/org/springframework/cglib/proxy/MethodProxy.java +++ b/spring-core/src/main/java/org/springframework/cglib/proxy/MethodProxy.java @@ -56,9 +56,15 @@ public class MethodProxy { proxy.sig2 = new Signature(name2, desc); proxy.createInfo = new CreateInfo(c1, c2); - // SPRING PATCH BEGIN: early initialization for overridden methods on subclasses - if (!c1.isInterface()) { - proxy.init(); + // SPRING PATCH BEGIN + if (!c1.isInterface() && c1 != Object.class) { + // Try early initialization for overridden methods on subclasses + try { + proxy.init(); + } + catch (CodeGenerationException ex) { + // Ignore - to be retried when actually needed later on (possibly not at all) + } } // SPRING PATCH END