zoukankan      html  css  js  c++  java
  • JDK动态代理

    1、接口类

    public interface UserDAO  {
      public void do(){};
    }

    2、实现类

    public class UserDAOImp implements UserDAO{
        public void do(){
            System.out.println("do userDAO");
        }
    }

    3、要支入的方法的类

    public static class Transaction{
    
        public void start(){
           System.out.println("Transaction start......");
        }
        public void end(){
          System.out.println("Transaction end......");
        }
    }

    4、Handler类

    public class TransactionHandler implements InvocationHandler {   
        private Object target;   
        public TransactionHandler(Object target) {   
            this.target = target;   
        }   //也可以用getter 和setter方法
        public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {   
            Transaction.start();   
            Object obj = method.invoke(target, args);   
            Transaction.end();   
            return obj;   
        }   
    } 

    5、调用的类(客户端或者测试类)

    import java.lang.reflect.Proxy; 
    public class TestDynamicProxy { 
      public static void main(String[] args) { 
        UserDAO target = new UserDAOImp(); 
        Handler handler = new Handler(target);
    
        /**
        或者 Handler handler = new Handler();
               handler .setHandler(target);
        */
        UserDAO proxy = (UserDAO) Proxy.newProxyInstance(target.getClass().getClassLoader(),target.getClass().getInterfaces(), handler); 
        proxy.do(); 
      } 
    } 
  • 相关阅读:
    ubuntu十年
    国内开源镜像站
    vi 配置文件
    如何查看Linux命令源代码
    gedit乱码问题的解决
    Linux启动项修复
    我写新年愿望
    SEGGER J-Link 弹窗 在altium designer中禁用USBJATG
    线缆测试,手机端程序说明
    养兔场 网站上的个人介绍
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/2998228.html
Copyright © 2011-2022 走看看