spring 2.5 AOP之代理类基础理解

来源:互联网 发布:积分兑换系统源码 编辑:程序博客网 时间:2024/06/16 02:09

JDK或者第三方控件动态生成代理对象的字节码,
使用jdk的代理类(Proxy)创建代理对象,
Proxy代理类使用前提:目标对象面向接口

//创建代理对象public Class JDKProxyFactory implements InvocationHandler{//定义需要生成代理对象的目标对象private Object targetObject;//利用目标对象生成代理对象实例public Object createProxyInstance(Object targetObject){this.targetObject= targetObject;//参数:loader:当前目标对象的加载器,interfaces:当前代理对象的所有接口,实现了目标对象的所有接口//h: invocationhandeler 回调接口,必须实现invationhandler接口调用目标对象的接口方法时,会被当前代理对象拦截,进入invoke方法return  Proxy.newProxyInstance(this.targetoObject.getClass().getClassLoader(),                                 this.targetoObject.getClass().getInterfaces(),                                this);}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)        throws Throwable {    //=============test begin===================    /**     * UserServiceImpl作为目标对象     */    UserServiceImpl user = (UserServiceImpl) targetoObject;    /**     * 权限控制     */    Object resultObject = null;    if(user.getUser()!=null){        //有权限==执行方法        resultObject = method.invoke(targetoObject, args);    }//=============test end===================    /**     * 如果要访问目标对象,将方法调用委派给目标对象     */    /**     * arg0:目标对象     * arg1:方法的输入参数     *///      Object resultObject = method.invoke(targetoObject, args);    return resultObject;}}
0 0