diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java index e4d0d862c5b..69c3d1ce956 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java @@ -541,7 +541,7 @@ class ConfigurationClassEnhancer { if (method.getName().equals("getObject") && args.length == 0) { return beanFactory.getBean(beanName); } - return proxy.invoke(factoryBean, args); + return method.invoke(factoryBean, args); }); return fbProxy; 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 fc0f63bb0a8..afa6a2582b3 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 @@ -55,6 +55,13 @@ public class MethodProxy { proxy.sig1 = new Signature(name1, desc); 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 END + return proxy; }