参考 https://blog.csdn.net/undergrowth/article/details/86493336
核心Code
ByteBuddy
流式api方式的入口类
提供Subclassing/Redefining/Rebasing方式改写字节码
所有的操作依赖DynamicType.Builder进行,创建不可变的对象
ElementMatchers(ElementMatcher)
提供一系列的元素匹配的工具类(named/any/nameEndsWith等等)
ElementMatcher(提供对类型、方法、字段、注解进行matches的方式,类似于Predicate)
Junction对多个ElementMatcher进行了and/or操作
Implementation(用于提供动态方法的实现)
FixedValue(方法调用返回固定值)
MethodDelegation(方法调用委托,支持以下两种方式)
Class的static方法调用
object的instance method方法调用
DynamicType(动态类型,所有字节码操作的开始,非常值得关注)
Unloaded(动态创建的字节码还未加载进入到虚拟机,需要类加载器进行加载)
Loaded(已加载到jvm中后,解析出Class表示)
Default(DynamicType的默认实现,完成相关实际操作)
Builder(用于创建DynamicType,相关接口以及实现后续待详解)
MethodDefinition
FieldDefinition
AbstractBase
AgentBuilder(java agent的操作入口,后续详解)
Transformer(对实例进行转换操作)
来源:oschina
链接:https://my.oschina.net/u/3126880/blog/3165058