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进行切面处理了

  • 相关阅读:
    .Net框架集WebClient类向WinCE平台上传文件(FTP方式)延迟15秒释疑
    WinCE系统下BootLoader的开发
    cf1154G 埃氏筛应用
    关于调用C kernel functions
    Download internal table data into Excel(比使用OLE自己填写速度要快)
    Internet+大会和Google请来的大师
    回到Mountain View
    关于F4 Help帮助窗口的参数F4METHOD的设置
    计划策略 MTS部分
    人在Google
  • 原文地址:https://www.cnblogs.com/feicheng/p/6612700.html
Copyright © 2011-2022 走看看