Java代理模式

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;

}

}

人之所以有一张嘴,而有两只耳朵,原因是听的要比说的多一倍。

Java代理模式

相关文章:

你感兴趣的文章:

标签云: