1、jdk代理

创建代理对象  

classA   a = Proxy.newProxyInstance(Factory.class.getClassLoader(), new Class[]{Superclass}, new ( ?classB implements classA  ) handlerA implements InvocationHandler);

前提是被代理的对象必须是实现了某个接口,然后才能进行代理  classB 实现classA的接口

主要开发的内容在于   编写handler 实现需要代理的内容

核心对象 通过 jdk的类加载器(Factory.class.getClassLoader())进行代理

2、cglib代理

Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(Superclass);
enhancer.setCallback(new InterceptorB  implements MethodInterceptor);

//动态生成代理对象
return enhancer.create();

3、javassist

ProxyFactory proxyFactory = new ProxyFactory();
// 设置需要创建子类的父类
proxyFactory.setSuperclass(clazz);

proxyFactory.setHandler(new InterceptorB  implements MethodHandler)

proxyFactory.createClass().newInstance()

 

posted on 2019-04-01 11:06  秦水坡  阅读(165)  评论(0编辑  收藏  举报