CGLIB代理
cglib是一个高性能的代码生成库。
相对jdk动态代理,针对没有实现接口的类提供代理方案。
利用轻量级字节码处理框架ASM,将相应字节码转换生成子类,覆盖非final方法来进行代理,因此,cglib不能代理final类或者final方法。
通过提供一系列的回调类型,处理不同场景下的代理:

功能最强的是MethodInterceptor类型,代理对象的所有方法都会被分配到这个接口的intercept方法进行处理。
另一个关键类Enhancer,可以通过该实例指定代理对象,设置相应回调类型,创建具体代理对象: