如果被Spring包装到代理中,如何知道原始类名?

Dim*_*ims 5 java spring proxy-classes cglib

我试图通过getClass().getSimpleName()under 获取一些类名Spring,它返回类似的东西

MyClass$$EnhancerBySpringCGLIB$$SOMEHEX
Run Code Online (Sandbox Code Playgroud)

这可能是因为Spring将类包装到代理中.

有没有便携的方法来获得原始的类名?

Jam*_*ins 16

Spring为此提供了实用程序.

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/ClassUtils.html#getUserClass-java.lang.Class-

public static Class<?> getUserClass(Class<?> clazz)
Run Code Online (Sandbox Code Playgroud)

"返回给定类的用户定义类:通常只是给定的类,但是在CGLIB生成的子类的情况下是原始类."

  • 在 Spring Boot 中: `log.debug(ClassUtils.getUserClass(constraintDescriptor.getAnnotation()).getName());` 是 `com.sun.proxy.$Proxy153` :-/ (2认同)