public class CGLIBProxy implements MethodInterceptor {
private Object targetObject;//代理的目标对象
public Object createProxyInstance(Object targetObject){
this.targetObject = targetObject;
Enhancer enhancer = new Enhancer();//该类用于生成代理对象
enhancer.setSuperclass(this.targetObject.getClass());//设置父类
enhancer.setCallback(this);//设置回调用对象为本身
return enhancer.create();
}
public Object intercept(Object proxy, Method method, Object[] args,
MethodProxy methodProxy) throws Throwable {
Log log=new Log();//事后通知
Security security=new Security();//事前通知
Transcation tx=new Transcation();//环通知
security.doCheck();
tx.beginTransacation();
Object obj=methodProxy.invoke(this.targetObject, args);
tx.closeTransacation();
log.doLog();
return obj;
}
}
|