package org.framework.proxy;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
import java.util.List;
/**
* 代理管理器
* 我们使用CGLIB提供的ENhancer#create方法来创建代理对象,将intercept的参数传入ProxyChain的构造器中即可
* Created by lizhaoz on 2015/12/20.
*/
public class ProxyManager {
public static <T> T createProxy(final Class<?> targetClass,final List<Proxy> proxyList){
return (T) Enhancer.create(targetClass, new MethodInterceptor() {
@Override
public Object intercept(Object targetObject, Method targetmethod,
Object[] methodParams, MethodProxy methodProxy) throws Throwable {
return new ProxyChain(targetClass,targetObject,targetmethod,methodProxy,methodParams,
proxyList).doProxyChain();
}
});
}
}