美文网首页
代理没有接口的类-CGLib

代理没有接口的类-CGLib

作者: Vekaco | 来源:发表于2018-09-18 21:13 被阅读0次

当需要代理没有任何接口的类时,动态代理无法实现该功能。此时需要借助CGLib来代理没有接口的类。

我们需要引入以下两个依赖包,cglibasm

public class CGLibProxy implements MethodInterceptor{

    public <T> T getProxy(Class<T> cls) {
        return (T) Enhancer.create(cls,this);
    }

    @Override
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
        before();
        Object result = methodProxy.invokeSuper(o, objects);
        after();

        return result;
    }

    private void before() {
        System.out.println("before...");
    }

    private void after() {
        System.out.println("after...");
    }

    public static void main(String[] args) {
        CGLibProxy cgLibProxy = new CGLibProxy();
        Hello helloProxy = cgLibProxy.getProxy(HelloImpl.class);
        helloProxy.say("Jack");
    }
}

实现CGLib提供给我们的MethodInterceptor的intercept方法,实质上可以将此理解为方法层面的拦截器。

相关文章

  • Spring中默认使用jdk代理还是cglib代理?

    jdk代理(基于接口):如果目标实现了接口,那么默认使用jdk代理。cglib代理(基于类):如果目标没有实现接口...

  • AOP底层实现(了解)

    两种代理机制: JDK 的动态代理:针对实现了接口的类产生代理。 Cglib 的动态代理:针对没有实现接口的类产生...

  • 代理没有接口的类-CGLib

    当需要代理没有任何接口的类时,动态代理无法实现该功能。此时需要借助CGLib来代理没有接口的类。 我们需要引入以下...

  • JDK动态代理和CGLIB动态代理

    如果目标类实现接口,采用JDK动态代理;如果目标类没有实现接口,采用CGLIB动态代理 一.JDK动态代理 总结1...

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

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

  • spring aop

    JDK动态代理和CGLib代理 JDK的代理代理类 被代理接口 被代理实现类 启动类: jdk的动态代理是针对接口...

  • Spring AOP

    JDK的动态代理:只能用于实现了接口的类产生代理。 Cglib代理:针对没有实现接口的类产生代理,应用的是底层的字...

  • java动态代理与CGLib代理示例代码

    被代理服务接口定义与实现 接口定义 服务实现 动态代理类 使用 CGLib代理 使用

  • java动态代理

    目前动态代理主要有两种形式,jdk和cglib代理,其中动态代理是基于接口的代理,而cglib是基于类的动态代理。...

  • Java代理(jdk静态代理、动态代理和cglib动态代理)

    jdk静态代理 jdk动态代理 jdk动态代理的业务类必须实现接口 业务类的实现类 代理类的生成 cglib动态代...

网友评论

      本文标题:代理没有接口的类-CGLib

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