Byte-Buddy 初探

戏子无情 提交于 2020-02-27 16:04:20

参考  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(对实例进行转换操作)
 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!