ASM
文章平均质量分 90
智秒数服.未闻
camping~candy
展开
-
ASM(六) 利用TreeApi 动态生成以及转换方法字节码
一、MethodNode概述 ASM的TreeApi 对于Method的转换、生成也提供了一系列的组件和接口。其功能主要基于前一章提到的MethodNode类。MethodNode中大多数属性和方法都和ClassNode类似,其中最主要的属性就是InsnList了。InsnList是一个双向链表对象,包含了存储方法的字节指令序。先来看下InsnList中的主要是属性和方法:原创 2015-08-29 18:52:50 · 22748 阅读 · 2 评论 -
ASM(五) 利用TreeApi 解析生成及转换Class
篇开始介绍ASM另一部分主要的Api。TreeApi。这一部分源码是关联的asm-tree-5.0.4的版本。 在介绍前,先要知道一点, Tree工程的接口基本可以完成大部分我们之前介绍的Core中的功能。但是在实际使用中更加便利,当然也会更加消耗时间和性能。完成一个简单的生成编译后的Class字节码的任务,可能会花费多余Core的30%的时间,同时也会消耗更多内存。但是通过下面的介绍,相信在选择用哪种Api上,我们也会做出自己的取舍和判断。原创 2015-07-15 19:57:27 · 21278 阅读 · 0 评论 -
ASM(三) 利用Method组件动态生成方法的字节码
一、概述 ASM的CoreApi 中还提供了对class 中方法的生成和解析的组件。前面两篇着重介绍了ClassVisitor 组件的应用场景。ClassVisitor Api 中的visitMethod(int access, String name, String desc, String signature, String[] exceptions)方法返回了一个MethodV原创 2015-07-01 21:48:30 · 20886 阅读 · 0 评论 -
ASM(一) 利用Core API 解析和生成字节码
ASM是一个提供字节码解析和操作的框架。Cglib框架就是基于ASM框架实现的,被广泛应用的Hibernate,Spring就是基于Cglib 实现了AOP技术。 在说到AOP的Java实现,可能会优先想到java的Proxy api,通过invoke方法拦截处理相应的代码逻辑,但是proxy 是面向接口的,被代理的class的所有方法调用都会通过反射调用invoke 方法,相对性能开销原创 2015-06-09 18:58:44 · 20266 阅读 · 0 评论 -
ASM(二) 利用Core API 变更类成员
这一篇把这producer(ClassReader)和consumer(ClassWriter)来结合起来介绍一下如何动态添加 移除 Java 类成员以及利用一些ASM工具类。原创 2015-06-13 17:32:38 · 19051 阅读 · 0 评论 -
ASM(四) 利用Method 组件动态注入方法逻辑
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以通过继承MethodVisitor,来编写一个MethodXXXAdapte原创 2015-07-02 20:17:39 · 20910 阅读 · 2 评论