本文实例讲述了Java动态代理和AOP应用。分享给大家供大家参考,具体如下:
<强>一点睛强>
动态代理在AOP(东方方面计划,即面向切面编程)里被称为AOP代理,AOP代理可代替目标对象,AOP代理包含了目标对象的全部方法。但AOP代理中的方法与目标对象的方法存在差异:AOP代理里的方法可以在执行目标方法之前,之后插入一些通用处理。
<强>二代码强>
Dog.java
公共接口的狗 {//信息方法声明 空白的信息();//运行方法声明 空运行(); } >之前GunDog.java
公共类猎犬实现狗 {//实现info()方法,仅仅打印一个字符串 公共空间信息() { System.out.println(“我是一只猎狗”); }//实现run()方法,仅仅打印一个字符串 公共空间run () { System.out.println(“我奔跑迅速”); } } >之前DogUtil.java
公开课DogUtil {//第一个拦截器方法 公共空间method1 () { System.out.println(“=====模拟第一个通用方法====="); }//第二个拦截器方法 公共空间method2 () { System.out.println(“=====模拟通用方法二====="); } } >之前MyInvokationHandler.java
进口数组;*; 公共类MyInvokationHandler实现InvocationHandler {//需要被代理的对象 私有对象目标; 公共空间setTarget(对象目标) { 这一点。目标=目标; }//执行动态代理对象的所有方法时,都会被替换成执行如下的调用方法 公共对象调用对象代理、方法方法,对象[]参数) 抛出异常 { 新DogUtil DogUtil du=();//执行DogUtil对象中的method1。 du.method1 ();//以目标作为主调来执行方法方法 结果=方法对象。调用(目标,args);//执行DogUtil对象中的method2。 du.method2 (); 返回结果; } } >之前MyProxyFactory.java
进口数组;*; 公开课MyProxyFactory {//为指定目标生成动态代理对象 公共静态对象getProxy(对象目标) 抛出异常 {//创建一个MyInvokationHandler对象 MyInvokationHandler处理程序=新MyInvokationHandler ();//为MyInvokationHandler设置目标对象 handler.setTarget(目标);//创建,并返回一个动态代理 .getClassLoader返回Proxy.newProxyInstance (target.getClass () () ,.getInterfaces target.getClass()(),处理程序); } } >之前Test.java
公开课测试 { 公共静态void main (String [] args) 抛出异常 {//创建一个原始的猎犬对象,作为目标 狗目标=new猎犬();//以指定的目标来创建动态代理 狗狗=(狗)MyProxyFactory.getProxy(目标); dog.info (); dog.run (); } } >之前<强>三运行强>
E: \ Java \疯狂Java讲义\代码\ 18 \ 18.5 \ DynaProxy> Java测试
引用>
=====模拟第一个通用方法=====
我是一只猎狗
=====模拟通用方法二=====
=====模拟第一个通用方法=====
我奔跑迅速
=====模拟通用方法二=====更多的java相关内容感兴趣的读者可查看本站专题:《java面向对象程序设计入门与进阶教程》、《java数据结构与算法教程》、《java操作DOM节点技巧总结》,《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
Java动态代理和AOP应用示例