java实现动态代理 → AOP

 

AOP现在很多框架都有这个功能,但是java自身也有这个功能,只不过要自己进行一下手动编写,才能够实现,不过其原理都差不多。

起重要用的java类包有

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

其实现原理大概是这样,

1.编写代理处理函数 其必须事先java.lang.reflect.InvocationHandler接口

2.首先写一个接口

3.编写实现此接口的方法

5.编写客户端程序

Let'S go!

for  example:

第一步,编写代理处理类

 

  1. import java.lang.reflect.InvocationHandler;  
  2. import java.lang.reflect.Method;  
  3. import java.lang.reflect.Proxy;  
  4. public class Handler implements InvocationHandler{  
  5.   private Object obj;  
  6.   public Object bind(Object obj){  
  7.    this.obj=obj;  
  8.    return Proxy.newProxyInstance(obj.getClass().getClassLoader(),  
  9.          obj.getClass.getInterfaces(),this)  
  10.   }  
  11.   public Object invoke(Object proxy,Method method,Object[] args)throws Throwable{  
  12.    System.out.println("began");  
  13.    Object result=method.invoke(this.obj,obj);  
  14.    System.out.println("after");  
  15.    return result;  
  16.   }  
  17. }  

 

第二步,写接口

 

  1. public interface IHello {  
  2.     public void toHello(String name);  
  3. }  

 

第三步,实现接口

 

  1. public class HelloImp implements SayHello{  
  2.     public void toHello(String name) {  
  3.         System.out.println("hello:" + name);  
  4.     }  
  5. }  

 

第四步,客户端调用

 

  1. public class ProxyDemo {  
  2.     public static void main(String[] args) throws SecurityException, NoSuchMethodException {  
  3.           
  4.         LogHandler logHandler = new LogHandler();  
  5.           
  6.         SayHello hello = (SayHello)logHandler.bind(new HelloImp());  
  7.           
  8.         hello.toHello("hello");  
  9.           
  10.     }  
  11. }  

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值