import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import com.dao.impl.PersonDaoImpl;
//当目标类实现了接口,我们可以使用jdk的Proxy来生成代理对象。
public class JDKProxyFactory implements InvocationHandler{
private Object targetObject;
public Object createProxyIntance(Object targetObject){
this.targetObject = targetObject;
/*
* 第一个参数设置代码使用的类装载器,一般采用跟目标类相同的类装载器
* 第二个参数设置代理类实现的接口
* 第三个参数设置回调对象,当代理对象的方法被调用时,会委派给该参数指定对象的invoke方法
*/
return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
this.targetObject.getClass().getInterfaces(), this);
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
PersonDaoImpl bean = (PersonDaoImpl) this.targetObject;
Object result = null;
if(bean.getUser()!=null){
try {
result = method.invoke(targetObject, args);
} catch (RuntimeException e) {
}finally{
}
}
return result;
}
}
使用JDK创建代理类
最新推荐文章于 2023-04-05 11:02:45 发布