- 85
- 0
- 约9.69千字
- 约 12页
- 2021-04-12 发布于天津
- 举报
Java 实现 AOP 的几种方式
Spring AOP 实现机制标签:
人阅读 评论 (1) 收
人阅读 评论 (1) 收
藏 举报 分类: JAVA 技术( 34
藏 举报 分类: JAVA 技术( 34 )
技术类( 11 ) (1)
AOP 的各种实现在编译器修改源代码、
在运行期字节码加载
前修改字节码或字节码加载后动态创建代理类的字节码。以
是各种实现机制的比较: 类别分为静态 AOP (包括静态 织入)和动态 AOP (包括动态代理、动态字节码生成、自定
义类加载器、字节码转换)。静态织入:a、原理:在编译期,
切面直接以字节码形式编译到目标字节码文件中;
切面直接以字节码形式编译到目标字节码文件中
;b 、优点:
对系统性能无影响; C、缺点:不够灵活; 动态代理:a、 原理:在运行期,目标类加载后,为接口动态生成代理类。
将切面织入到代理类中;b、优点:更灵活;C、缺点:切入
的关注点要实现接口; 动态字节码生成:a
的关注点要实现接口; 动态字节码生成:
a、原理:在运行
期,目标类加载后, 动态构建字节码文件生成目标类的子类, 将切面逻辑加入到子类中;b、优点:没有接口也可以织入;
C、缺点:扩展类的实例方法为 final时,无法进行织入; 自 定义类加载器a、原理:在运行期,目标加载前,将切面逻
c、辑加到目标字节码里;b、优点:可以对绝大部分类进行织 入;C、缺点:代码中若使用了其它类加载器,贝y这些类将 不会被织入; 字节码转换a、原理:在运行期,所有类加载器加载字节码前进行拦截;b、优点:可以对所有类进行织 入;c、缺点: (2) Joinpoint
c、
Pointcut : Jointpoint 的表达式,表示拦截哪些方法。一个
Pointcut 对应多个 Joinpoint ; Advice :要切入的逻辑。
Before Advice :在方法前切入; After Advice :在方法后
切入,抛出异常时也会切入;After Returning Advice
切入,抛出异常时也会切入;
After Returning Advice :在
方法返回后切入,抛出异常不会切入;After ThrowingAdvice :在方法抛出异常时切入;Around Advice:在方法执行前后切入,可以中断或忽略原有流程的执行;
方法返回后切入,抛出异常不会切入;
After Throwing
Advice :在方法抛出异常时切入;
Around Advice
:在方
法执行前后切入,可以中断或忽略原有流程的执行;
目标
切面代理类 JointpointAdvicePointcutPointcut
切面
代理类 Jointpoint
Advice
Pointcut
Pointcut
织入器
织入器
通过在切面中定义 pointcut 来搜索目标(被代理类)的
Jointpoint (切入点),然后把要切入的逻辑( advice )织入 在 JDK1.3 后引入的动态代理机制,使我们可以在运行期动 态的创建代理类。使用动态代理实现 AOP 需要四个角色: 被代理的类、被代理类的接口、织入器
到目标对象里,生成代理类。3
到目标对象里,生成代理类。
3)动态代理的实现 Java
Proxy.newProxyInstance() )、InvocationHandler 。织入器 使用接口反射机制生成一个代理类,然后在这个代理类中织 入代码(切入逻辑) 。 InvocationHandler 是切面,包含了
Advice 和 Pointcut 。 动态代理在运行期通过接口动态生成
代理类。使用反射大量生成类文件可能引起 Full GC 造成性
方法区中能影响,因为字节码文件加载后会 存放在 JVM 运行时区的
方法区中
或持久代)。当方法区满的时候, 会引起 Full GC 。
因此当大量使用动态代理时,可以将持久代设置大一些,减 少 Full GC 次数。 动态代理的核心其实就是代理对象的生成, 即 Proxy.newProxyInstance() 。其中 getProxyClass() 方法用
于获取代理类,主要做了三件事:在当前类加载器的缓存里
搜索是否有代理类,没有则生成代理类并缓存在本地JVM
搜索是否有代理类,没有则生成代理类并缓存在本地
JVM
里。可以使用 JD-GUI 反编译软件打开 jre\lib\rt.jar 。 动态代
理生成的代理类,类似于:public class ProxyBusiness
理生成的代理类,类似于:
public class ProxyBusiness
implements IBusiness {privateInvocationHandler h;
im
您可能关注的文档
- HDPE双壁波纹管管道工程验收标准.docx
- hiit有哪些缺点和局限性.docx
- HP与3PAR在“云”中融合.docx
- HR组织管理模式创新:DARPA混合型组织.docx
- HSRP监视端口配置.docx
- HY-GDB型过电压保护器.docx
- IBM常用术语、略语总结.docx
- ICAO考试通话:Test13A(含答案).docx
- ICP光谱在钢铁分析中的应用.docx
- ICU30例病人行为改变的观察及护理.docx
- CN113902707B 标记球定位方法及其应用 (佗道医疗科技有限公司).docx
- CN114003123B 控件移动方法和电子设备 (华为技术有限公司).docx
- CN113918573B 数据处理方法及装置 (上海哔哩哔哩科技有限公司).docx
- CN113901192B 一种对话节点参数预填充的对话方法、装置、设备和介质 (深圳壹账通智能科技有限公司).docx
- DB21T 4205-2025地理标志产品 梁山西瓜(小梁山西瓜).pdf
- DB21T 4212-2025地理标志产品 辽中寒富苹果.pdf
- CN113893552B 虚拟资源的分配方法及装置、存储介质、计算机设备 (完美世界(北京)软件科技发展有限公司).docx
- CN113971628B 图像匹配方法、装置和计算机可读存储介质 (株式会社理光).docx
- CN113920563B 在线考试作弊识别方法、装置、计算机设备和存储介质 (上海浦东发展银行股份有限公司).docx
- CN113963204B 一种孪生网络目标跟踪系统及方法 (江南大学).docx
最近下载
- (正式版)D-L∕T 1922-2018 架空输电线路导地线机械震动除冰装置使用技术导则.docx VIP
- ISO 10605(2008年版,2009.12.25翻译)(1)完整版.pdf VIP
- 地铁培训安全员课件.pptx VIP
- Q SH CG0156-2021 增效聚合物驱用稠油降黏剂技术要求.pdf VIP
- 20ZJ401 楼梯栏杆建筑工程图集.pdf VIP
- 创新日化德固赛rewoquat sq1.pdf VIP
- YL_335B说明书.pdf
- 中国入党志愿书(空白材料模板).pdf VIP
- 城市轨道交通安全管理第一章城市轨道交通安全管理概述课件.pdf VIP
- SJT 11294-2018 防静电地坪涂料通用规范(高清版).pdf VIP
原创力文档

文档评论(0)