提交 9fbb57c3 编写于 作者: J Juergen Hoeller

Fixed CGLIB class validation to not raising warning for static final methods

Issue: SPR-11107
上级 3ff3805e
...@@ -25,27 +25,27 @@ import java.util.List; ...@@ -25,27 +25,27 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.WeakHashMap; import java.util.WeakHashMap;
import org.springframework.cglib.core.CodeGenerationException;
import org.springframework.cglib.proxy.Callback;
import org.springframework.cglib.proxy.CallbackFilter;
import org.springframework.cglib.proxy.Dispatcher;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.Factory;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import org.springframework.cglib.proxy.NoOp;
import org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy;
import org.aopalliance.aop.Advice; import org.aopalliance.aop.Advice;
import org.aopalliance.intercept.MethodInvocation; import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.aop.Advisor; import org.springframework.aop.Advisor;
import org.springframework.aop.AopInvocationException; import org.springframework.aop.AopInvocationException;
import org.springframework.aop.PointcutAdvisor; import org.springframework.aop.PointcutAdvisor;
import org.springframework.aop.RawTargetAccess; import org.springframework.aop.RawTargetAccess;
import org.springframework.aop.TargetSource; import org.springframework.aop.TargetSource;
import org.springframework.aop.support.AopUtils; import org.springframework.aop.support.AopUtils;
import org.springframework.cglib.core.CodeGenerationException;
import org.springframework.cglib.proxy.Callback;
import org.springframework.cglib.proxy.CallbackFilter;
import org.springframework.cglib.proxy.Dispatcher;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.Factory;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import org.springframework.cglib.proxy.NoOp;
import org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy;
import org.springframework.core.SmartClassLoader; import org.springframework.core.SmartClassLoader;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import org.springframework.util.ClassUtils; import org.springframework.util.ClassUtils;
...@@ -255,11 +255,14 @@ class CglibAopProxy implements AopProxy, Serializable { ...@@ -255,11 +255,14 @@ class CglibAopProxy implements AopProxy, Serializable {
* for each one found. * for each one found.
*/ */
private void doValidateClass(Class<?> proxySuperClass) { private void doValidateClass(Class<?> proxySuperClass) {
Method[] methods = proxySuperClass.getMethods(); if (logger.isWarnEnabled()) {
for (Method method : methods) { Method[] methods = proxySuperClass.getMethods();
if (!Object.class.equals(method.getDeclaringClass()) && Modifier.isFinal(method.getModifiers())) { for (Method method : methods) {
logger.warn("Unable to proxy method [" + method + "] because it is final: " + if (!Object.class.equals(method.getDeclaringClass()) && !Modifier.isStatic(method.getModifiers()) &&
"All calls to this method via a proxy will be routed directly to the proxy."); Modifier.isFinal(method.getModifiers())) {
logger.warn("Unable to proxy method [" + method + "] because it is final: " +
"All calls to this method via a proxy will be routed directly to the proxy.");
}
} }
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册