aop动态代理基于jdk的的实现

来源:互联网 发布:佐伯俊男 不倒翁 知乎 编辑:程序博客网 时间:2024/05/24 00:24

jdk动态代理的实现是基于接口实现的,所以无论是真实对象还是代理对象都需要实现一个公共的接口

public class JdkProxySubject implements InvocationHandler

{
//这是真实对象,因为方法都是委托给真实对象去调用的
private RealSubject realSubject;
//构造函数对对象进行强引用
public JdkProxySubject(RealSubject realSubject)
{
this.realSubject=realSubject;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
System.out.println("before的业务逻辑写在这里");
Object result=null;
try
{
//调用执行目标对象的方法
//利用反射(利用动态器反射方法)
result=method.invoke(realSubject, args);
} catch (Exception e)
{
//对异常进行捕获,捕获了还得抛出去
System.err.println(e.getMessage());
throw e;
}
finally {
System.out.println("after的业务逻辑写在这里");
}
return result;
}
}