cglib代理原理,cglib怎么实现代理设计模式

科技资讯 投稿 6900 0 评论

cglib代理原理,cglib怎么实现代理设计模式

以下内容主要是针对遇上cglib怎么实现代理设计模式等问题,我们该怎么处理呢。下面这篇文章将为你提供一个解决思路,希望能帮你解决到相关问题。

1. CGLIB介绍

CGLIB(Code Generation Library)是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。它广泛的被许多AOP的框架使用,例如Spring AOP和synaop,为他们提供方法的interception(拦截)。CGLIB包的核心类是Enhancer,Enhancer是CGLIB的字节码增强器,它可以方便的对类进行扩展。

2. CGLIB实现代理设计模式

CGLIB实现的动态代理是通过生成一个被代理类的子类,然后重写父类的方法来实现的。下面是使用CGLIB实现动态代理的步骤:

1)创建Enhancer对象,创建一个给定类的动态子类;

2)为动态子类设置父类;

3)定义拦截器;

4)调用Enhancer对象的create方法创建代理类;

5)通过代理类调用目标方法。

3. 代码实现


public interface UserService {
    public void add();
}

public class UserServiceImpl implements UserService {
    public void add() {
        System.out.println("add");
    }
}

public class MyInterceptor implements MethodInterceptor {
    public Object intercept(Object obj, Method method, Object[] args,
            MethodProxy proxy) throws Throwable {
        System.out.println("before");
        Object result = proxy.invokeSuper(obj, args);
        System.out.println("after");
        return result;
    }
}

public class CglibProxy {
    public static void main(String[] args) {
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(UserServiceImpl.class);
        enhancer.setCallback(new MyInterceptor());
        UserService o = (UserService)enhancer.create();
        o.add();
    }
}

总结

以上就是为你整理的cglib怎么实现代理设计模式全部内容,希望文章能够帮你解决相关问题,更多请关注本站相关栏目的其它相关文章!

编程笔记 » cglib代理原理,cglib怎么实现代理设计模式

赞同 (39) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽