package com.vivagame.pay.service.proxy;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import org.apache.log4j.Logger;
/**
* CGLIB代理类
*
* @author shenjichao@vivagame.cn
*
*/
public class UserServiceCGLIBProxy implements MethodInterceptor {
private static Logger logger = Logger
.getLogger(UserServiceCGLIBProxy.class);
private Object target;// 目标对象
/** 获取目标对象 **/
public Object getTarget(Object target) {
logger.info("The getTarget method execute.");
this.target = target;
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(this.target.getClass());// 设置父类
enhancer.setCallback(this);// 回调
return enhancer.create();// 创建代理对象
}
@Override
public Object intercept(Object arg0, Method arg1, Object[] arg2,
MethodProxy arg3) throws Throwable {
logger.info("The intetcept method execute.");
logger.info("Before the invoke method execute.");
Object result = arg3.invoke(target, arg2);
logger.info("After the invoke method execute.");
logger.info("result:" + result);
return result;
}
}
人之所以有一张嘴,而有两只耳朵,原因是听的要比说的多一倍。