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:

第一步,编写代理处理类

import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class Handler implements InvocationHandler{ private Object obj; public Object bind(Object obj){ this.obj=obj; return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass.getInterfaces(),this) } public Object invoke(Object proxy,Method method,Object[] args)throws Throwable{ System.out.println("began"); Object result=method.invoke(this.obj,obj); System.out.println("after"); return result; } }

第二步,写接口

public interface IHello { public void toHello(String name); }

第三步,实现接口

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

第四步,客户端调用

public class ProxyDemo { public static void main(String[] args) throws SecurityException, NoSuchMethodException { LogHandler logHandler = new LogHandler(); SayHello hello = (SayHello)logHandler.bind(new HelloImp()); hello.toHello("hello"); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值