Skip to content

Commit e4fb72f

Browse files
committed
Fixed CGLIB class validation to not raising warning for static final methods
Issue: SPR-11107 (cherry picked from commit 9fbb57c)
1 parent 6fb1098 commit e4fb72f

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,27 @@
2525
import java.util.Map;
2626
import java.util.WeakHashMap;
2727

28-
import org.springframework.cglib.core.CodeGenerationException;
29-
import org.springframework.cglib.proxy.Callback;
30-
import org.springframework.cglib.proxy.CallbackFilter;
31-
import org.springframework.cglib.proxy.Dispatcher;
32-
import org.springframework.cglib.proxy.Enhancer;
33-
import org.springframework.cglib.proxy.Factory;
34-
import org.springframework.cglib.proxy.MethodInterceptor;
35-
import org.springframework.cglib.proxy.MethodProxy;
36-
import org.springframework.cglib.proxy.NoOp;
37-
import org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy;
38-
3928
import org.aopalliance.aop.Advice;
4029
import org.aopalliance.intercept.MethodInvocation;
4130
import org.apache.commons.logging.Log;
4231
import org.apache.commons.logging.LogFactory;
32+
4333
import org.springframework.aop.Advisor;
4434
import org.springframework.aop.AopInvocationException;
4535
import org.springframework.aop.PointcutAdvisor;
4636
import org.springframework.aop.RawTargetAccess;
4737
import org.springframework.aop.TargetSource;
4838
import org.springframework.aop.support.AopUtils;
39+
import org.springframework.cglib.core.CodeGenerationException;
40+
import org.springframework.cglib.proxy.Callback;
41+
import org.springframework.cglib.proxy.CallbackFilter;
42+
import org.springframework.cglib.proxy.Dispatcher;
43+
import org.springframework.cglib.proxy.Enhancer;
44+
import org.springframework.cglib.proxy.Factory;
45+
import org.springframework.cglib.proxy.MethodInterceptor;
46+
import org.springframework.cglib.proxy.MethodProxy;
47+
import org.springframework.cglib.proxy.NoOp;
48+
import org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy;
4949
import org.springframework.core.SmartClassLoader;
5050
import org.springframework.util.Assert;
5151
import org.springframework.util.ClassUtils;
@@ -253,11 +253,14 @@ private void validateClassIfNecessary(Class<?> proxySuperClass) {
253253
* for each one found.
254254
*/
255255
private void doValidateClass(Class<?> proxySuperClass) {
256-
Method[] methods = proxySuperClass.getMethods();
257-
for (Method method : methods) {
258-
if (!Object.class.equals(method.getDeclaringClass()) && Modifier.isFinal(method.getModifiers())) {
259-
logger.warn("Unable to proxy method [" + method + "] because it is final: " +
260-
"All calls to this method via a proxy will be routed directly to the proxy.");
256+
if (logger.isWarnEnabled()) {
257+
Method[] methods = proxySuperClass.getMethods();
258+
for (Method method : methods) {
259+
if (!Object.class.equals(method.getDeclaringClass()) && !Modifier.isStatic(method.getModifiers()) &&
260+
Modifier.isFinal(method.getModifiers())) {
261+
logger.warn("Unable to proxy method [" + method + "] because it is final: " +
262+
"All calls to this method via a proxy will be routed directly to the proxy.");
263+
}
261264
}
262265
}
263266
}

0 commit comments

Comments
 (0)