cglib获取原始类
import java.lang.reflect.Proxy; public class ProxyUtils { public static final String GUICE_PROXY_FLAG = "$EnhancerByGuice$"; public static final String CGLIB_PROXY_FLAG = "$EnhancerByCGLIB$"; private ProxyUtils() {} public static boolean isGuiceProxy(Class clazz) { return (clazz != null) && clazz.getName().contains(GUICE_PROXY_FLAG); } public static boolean isCglibProxy(Class clazz) { return (clazz != null) && clazz.getName().contains(CGLIB_PROXY_FLAG); } public static Class getRawClass(Object value) { if (null == value) { return null; } if (value instanceof ValueHolder) { return getRawClassFromGuiceProxy(((ValueHolder) value).getImplClass()); } return isGuiceProxy(value.getClass()) ? getRawClassFromGuiceProxy(value.getClass().getSuperclass()) : value.getClass(); } public static Class getRawClassFromGuiceProxy(final Class clazz) { if (!isGuiceProxy(clazz)) { return clazz; } Class rawClass; do { rawClass = clazz.getSuperclass(); } while (rawClass.getName().contains(GUICE_PROXY_FLAG)); return rawClass; } public static Class getRawClassFromProxy(final Class clazz) { if (isCglibProxy(clazz) || isGuiceProxy(clazz)) { return getRawClassFromProxy(clazz.getSuperclass()); } return clazz; } }