1700461041
}
1700461042
1700461043
重点是我们的MyInvocationHandler,如代码清单12-27所示。
1700461044
1700461045
代码清单12-27 动态代理的Handler类
1700461046
1700461047
public class MyInvocationHandler implements InvocationHandler{
1700461048
1700461049
//被代理的对象
1700461050
1700461051
private Object target=null;
1700461052
1700461053
//通过构造函数传递一个对象
1700461054
1700461055
public MyInvocationHandler(Object_obj){
1700461056
1700461057
this.target=_obj;
1700461058
1700461059
}
1700461060
1700461061
//代理方法
1700461062
1700461063
public Object invoke(Object proxy,Method method,Object[]args)
1700461064
1700461065
throws Throwable{
1700461066
1700461067
//执行被代理的方法
1700461068
1700461069
return method.invoke(this.target,args);
1700461070
1700461071
}
1700461072
1700461073
}
1700461074
1700461075
非常简单,所有通过动态代理实现的方法全部通过invokve方法调用。DynamicProxy代码如代码清单12-28所示。
1700461076
1700461077
代码清单12-28 动态代理类
1700461078
1700461079
public class DynamicProxy<T>{
1700461080
1700461081
public static<T>T newProxyInstance(ClassLoader loader,Class<?>[]
1700461082
1700461083
interfaces,InvocationHandler h){
1700461084
1700461085
//寻找JoinPoint连接点,AOP框架使用元数据定义
1700461086
1700461087
if(true){
1700461088
1700461089
//执行一个前置通知
1700461090
[
上一页 ]
[ :1.700461041e+09 ]
[
下一页 ]