/**
* 从AOP代理对象中获得原对象的类型
* @param proxyObject
* @return
*/
@SuppressWarnings("unchecked")
public static final <T> T getBeanFromProxy(T proxyObject) {
Class<?> clazz = proxyObject.getClass();
if(clazz.getName().startsWith("$Proxy")) {
try {
clazz = clazz.getSuperclass();
Field hField = clazz.getDeclaredField("h");
hField.setAccessible(true);
Object hObject = hField.get(proxyObject);
Class<?> dynamicProxyClass = hObject.getClass();
Field advisedField = dynamicProxyClass.getDeclaredField("advised");
advisedField.setAccessible(true);
Object advisedObject = advisedField.get(hObject);
Class<?> advisedSupportClass = advisedObject.getClass().getSuperclass().getSuper
从Aop代理的对象中获取源对象
最新推荐文章于 2025-03-16 22:30:04 发布