java获取动态代理的target目标
private static Object getCglibProxyTargetObject(Object proxy) throws Exception {
Field h = ().getDeclaredField("CGLIB$CALLBACK_0");
(true);
Object dynamicAdvisedInterceptor = h.get(proxy);
Field advised = ().getDeclaredField("advised");
(true);
Object target = ((AdvisedSupport)advised.get(dynamicAdvisedInterceptor)).getTargetSource().getTarget();
return target;
}
private static Object getJdkDynamicProxyTargetObject(Object proxy) throws Exception {
Field h = ().getSuperclass().getDeclaredField("h");
(true);
AopProxy aopProxy = (AopProxy) h.get(proxy);
Field advised = ().getDeclaredField("advised");
(true);
Object target = ((AdvisedSupport)advised.get(aopProxy)).getTargetSource().getTarget();
return target;
}
}