2015-04-01 3 views
3

Я пытаюсь получить некоторые классы имя, getClass().getSimpleName() под Spring и она возвращает что-то вродеКак узнать исходное имя класса, если оно связано с весной?

MyClass$$EnhancerBySpringCGLIB$$SOMEHEX 

Это, вероятно, потому, что Spring оборачивает класс в прокси.

Есть ли какой-либо переносной способ получить оригинальное название класса?

+1

Почему вы хотите это сделать? –

+1

Есть ли причина, почему это не должно быть сделано? –

ответ

3

Весна предоставляет утилиту для этого.

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

public static Class<?> getUserClass(Class<?> clazz) 

«Вернуть определенный пользователем класс для данного класса: обычно просто данный класс, но исходный класс в случае CGLIB сгенерированного подкласса.»

+0

Я забыл упомянуть: это работает только для объектов, проксированных весной. Нет общего решения для обнаружения целевого типа любого заданного прокси. Способ, которым я решаю это, заключается в явном определении целевого типа моих прокси, внешних по отношению к самому прокси. –