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()