zoukankan      html  css  js  c++  java
  • java cglib代理应用

    看了smart-framework,写一下自己对代理的理解 话不多说,直接上代码

    public interface Proxy{

      public Object doProxy(ProxyChain proxyChain);

    }

    public class ProxyImpl implements Proxy{

      public Object doProxy(ProxyChain proxyChain){

        Object result= null;  

        //before

        result = proxyChain.doProxyChain();

        //after

      }

    }

    public class ProxyChain{

      private List<Proxy> proxys;

      private MethodProxy methodProxy;

      private Class<?> targetClass;

      private Object targetObject;

      private Method targetMethod;

      private Object[] methodParams;

      private int proxyIndex = 0;  

      public ProxyChain(Class<?> targetClass,Object targetObject,Method targetMethod,Object[] methodParams,methodProxy,List<Proxy> proxys){

        ......

      }

      

      public Object doProxyChain(){

        Object result = null;

        if(proxyIndex<proxys.size()){

          result = proxys.get(proxyIndex++).doProxy(this);

        }else{

          result = methodProxy.invokeSuper(targetObj,methodParams);

        }

        return result;

      }

    }

    public class ProxyManager{

      public static <T> T createProxy(Class<?> targetClass,List<Proxy> proxys){

        return (T) Enhancer.create(targetClass,new MethodInterceptor(){

          public Object interceptor(Object targetObject, Method targetMethod, Object[] methodParams,MethodProxy methodProxy){

            return new ProxyChain(targetClass,targetObject,targetMethod,methodParams,methodProxy,proxys).doProxyChain();

          }

        });

      }

    }

    在ProxyManager中得到代理对象

    在ProxyChain可以用做链路处理

    proxy的子类中就可以进行相似于spring中的Aspect进行切面处理了

  • 相关阅读:
    python+Appium自动化:记录遇到的坑
    python+Appium自动化:Appium元素检测
    python+Appium自动化:id元素定位
    python+Appium自动化:运行第一个appium脚本
    python+Appium自动化:Capability配置简介
    python+Appium自动化:Appium-desktop界面简介
    Appium简介以及环境安装
    monkeyrunner录制和回放功能
    monkeyrunner脚本录制和回放下载
    MonkeyRunner的简介与综合实践
  • 原文地址:https://www.cnblogs.com/feicheng/p/6612700.html
Copyright © 2011-2022 走看看