从Aop代理的对象中获取源对象
来源:互联网 发布:宁波淘宝网店培训 编辑:程序博客网 时间:2024/06/07 04:48
/** * 从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().getSuperclass(); Field targetField = advisedSupportClass.getDeclaredField("targetSource"); targetField.setAccessible(true); Object targetObject = targetField.get(advisedObject); Class<?> targetSourceClass = targetObject.getClass(); Field targetClassField = targetSourceClass.getDeclaredField("target"); targetClassField.setAccessible(true); return (T) targetClassField.get(targetObject); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return null; }
阅读全文
0 0
- 从Aop代理的对象中获取源对象
- Spring AOP demo 和获取被CGLIB代理的对象
- Spring AOP 代理对象的生成 part3
- spring aop 通过获取代理对象实现事务切换
- Spring aop 通过获取代理对象实现事务切换
- 在spring中获取代理对象代理的目标对象工具类
- 在spring中获取代理对象代理的目标对象工具类
- 在spring中获取代理对象代理的目标对象工具类
- 在spring中获取代理对象代理的目标对象工具类
- Spring-AOP 前置代理对象
- spring aop获取目标对象的方法对象
- spring aop获取目标对象的方法对象(续)
- 从spring容器中获取已经创建好的对象
- 从request对象中快速获取参数的办法
- 从bean中获取对象的属性值
- 从request对象中获取请求json格式的参数
- AOP动态代理对象的两种方式
- spring aop实现过程之一代理对象的生成
- 线程互斥
- [PAT乙级]1057. 数零壹(20)
- 代理模式 Prototype
- Codeforces Round #426 (Div. 2) B. The Festive Evening
- bzoj P4870 [Shoi2017]组合数问题
- 从Aop代理的对象中获取源对象
- FMX从TCustomXXX继承控件的子控件,无法同时显示的问题
- ssm之mybatis(动态sql)
- CSS背景的相关属性
- ios之第一个图形化界面
- Linux---lnmp之nginx
- python2和pyhton3区别
- Codeforces Round #426 (Div. 2) A B C
- DB2 学习笔记 ——数据库管理