利用spring aop实现动态代理

  

下面由我来给大家展示用spring aop实现动态代理的例子(电脑打印)

  

下面就看一下具体的代码:

  

先定义一个打印机的接口

        包aop007_ComPrint;      公共接口打印{      公共空间ColorPrint ();//彩色打印   公共空间白背景图片();//黑白打印   }      之前      

然后定义两个实现类,分别实现彩色打印和黑白打印

        包aop007_ComPrint;      公共类ColorPrint实现打印{      @Override   公共空间ColorPrint () {   System.out.println(“[核心业务逻辑)我是一台彩色打印机!”);   System.out.println(“[核心业务逻辑]我主要负责打印彩色资料!”);   }      @Override   公共空间白背景图片(){//System.out.println(“[核心业务逻辑]我主要负责打印黑白资料!”);   }      }   之前            包aop007_ComPrint;      公共类白背景图片实现打印{      @Override   公共空间白背景图片(){   System.out.println(“[核心业务逻辑)我是一台黑白打印机!”);   System.out.println(“[核心业务逻辑]我主要负责打印黑白资料!”);   }      @Override   公共空间ColorPrint () {//System.out.println(“[核心业务逻辑]我主要负责打印彩色资料!”);   }      }   之前      

再定义一个代理类PrintHandler实现动态代理打印功能

        包aop007_ComPrint;      进口java.lang.reflect.InvocationHandler;   进口java.lang.reflect.Method;   进口java.util.Date;      公共类PrintHandler实现InvocationHandler {//目标类型不确定   私有对象目标;   公共PrintHandler(对象目标){   这一点。目标=目标;   }/*   *返回返回的是原来目标方法所返回的内容方法就是要执行的方法   */@Override   公共对象调用对象代理、方法方法,对象[]args)抛出Throwable {   前();//具体的业务逻辑代码//对象returnPrintObj=目标。//方法用于解释下面一行代码   对象returnPrintObj=方法。调用(目标,args);      后();   返回returnPrintObj;   }      私人空间在(){//前置任务   system . out。println()(新日期);   System.out.println(“打印机”);   System.out.println(“南方它学院提供!”);   }      私人无效后(){//后置任务   System.out.println(“学院打印机”);   System.out.println(“请好好爱护,弄坏你可赔不起的哦! ! !”);   }      }   之前      

最后就定义一个测试类TestPrint用于测试打印的功能

        包aop007_ComPrint;      进口java.lang.reflect.InvocationHandler;   进口java.lang.reflect.Proxy;/*   *增加一个【动态代理类,类似与明星的经纪人   *把核心的业务逻辑的代码和非核心的分离   *把非核心的代码交给经纪人(代理)去管理,   *注意:经纪人和要明星,必须实现同一个接口   */公开课TestPrint {      公共静态void main (String [] args) {//第一步:创建目标实现类的实例   打印cPrint=new ColorPrint ();   打印wPrint=new白背景图片();//第二步:创建一个动态代理类(CEO首席执行官)   InvocationHandler cPrintHandler=new PrintHandler (cPrint);   InvocationHandler wPrintHandler=new PrintHandler (wPrint);//第三步:创建动态代理(跟静态代理一样,申明的变量仍然是目标的接口)   打印cPrintProxy=(印刷)Proxy.newProxyInstance (cPrint.getClass () .getClassLoader (),   .getInterfaces cPrint.getClass () (),   cPrintHandler);   打印wPrintProxy=(印刷)Proxy.newProxyInstance (wPrint.getClass () .getClassLoader (),   .getInterfaces wPrint.getClass () (),   wPrintHandler);      cPrintProxy.ColorPrint ();//对比cPrint.ColorPrint ();(只有核心代码]运行后的区别   System.out.println ("------------------------------");   wPrintProxy.WhitePrint ();//对比wPrint.WhitePrint ();(只有核心代码]运行后的区别   }      }   之前      

到这里就完了,运行结果如下所示:

  

, 利用spring aop实现动态代理

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
  

利用spring aop实现动态代理