美文网首页
cglib使用文档

cglib使用文档

作者: 好学人 | 来源:发表于2019-10-01 12:40 被阅读0次

cglib简介

GitHub:https://github.com/cglib/cglib/

cglib是一款开源的动态代理库,与JDK动态代理基于接口的代理机制不同,cglib通过为被代理的类生成一个子类并重写被代理的方法实现代码的动态植入。

因此,cglib无法代理被final修饰的类或方法以及静态方法。

cglib的官方介绍如下:

cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.

cglib导入依赖

通过查看cglib项目的pom.xml文件,可以发现cglib内部依赖了ams.jar,因此除了导入cglib.jar还需要导入ams.jar,使用Maven导入或下载相应的jar包即可。

<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>cglib</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm</artifactId>
        <version>${asm.version}</version>
    </dependency>
</dependencies>

cglib基本用法

以下是cglib的基本用法,更详细的用法请参阅官方案例

// 1. 创建Enhancer对象
Enhancer enhancer = new Enhancer();
// 2. 指定父类Class对象
enhancer.setSuperclass(Person.class);
// 3. 设置方法拦截回调
enhancer.setCallback(new MethodInterceptor() {
    @Override
    public Object intercept(Object object, Method method, Object[] args, MethodProxy proxy) {
        // before...
        Object result = proxy.invokeSuper(object, args);
        // after..
        return result;
    }
});
// 4. 创建被代理的对象
Person person = (Person) enhancer.create();
person.speak();

总结

cglib基于AMS框架实现,是JDK动态代理的有效补充,可以用于AOP编程,比如日志打印、安全控制、统一鉴权等。

因为AMS框架是基于.class字节码的,因为无法用于android平台。

相关文章

  • cglib使用文档

    cglib简介 GitHub:https://github.com/cglib/cglib/ cglib是一款开源...

  • 十、spring aop之cglib动态代理

    使用 cglib使用需要实现MethodInterceptor接口,与JDK动态代理不同的是,cglib不需要目标...

  • 浅谈Java代理二:Cglib动态代理-MethodInterc

    CGLib动态代理特点:使用CGLib实现动态代理,完全不受代理类必须实现接口的限制,而且CGLib底层采用ASM...

  • Cglib和jdk动态代理

    Cglib和jdk动态代理说到cglib技术,使用的就是增强类Enhancer,底层使用的ASM技术.下面举例说明...

  • 动态代理——CGLib

    动态代理——CGLib 基本使用 或者 原理分析,待续...

  • # 源码解析:AOP(2)

    接上篇# 源码解析:AOP cglib类代理 使用cglib实现的代理与jdk代理类似,只是代理对象的构造方式不同...

  • cglib简单使用

    net.sf.cglib.beans 中有些工具可以动态生成、操作Bean,对Bean进行一些增强操作 net.s...

  • Spring AOP实现

    使用SpringBoot实现AOP动态代理 1 使用CGLIB实现AOP动态代理 .properties .xml

  • cglib学习笔记

    cglib学习笔记 cglib简介 cglib:Code Generation Library主页:https:/...

  • spring aop 汇总

    静态代理、动态代理和cglib代理 aop 使用 Spring AOP - 注解方式使用介绍spring aop ...

网友评论

      本文标题:cglib使用文档

      本文链接:https://www.haomeiwen.com/subject/eqekpctx.html