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
1700461091
(new BeforeAdvice()).exec();
1700461092
1700461093
}
1700461094
1700461095
//执行目标,并返回结果
1700461096
1700461097
return(T)Proxy.newProxyInstance(loader,interfaces,h);
1700461098
1700461099
}
1700461100
1700461101
}
1700461102
1700461103
在这里插入了较多的AOP术语,如在什么地方(连接点)执行什么行为(通知)。我们在这里实现了一个简单的横切面编程,有经验的读者可以看看AOP的配置文件就会明白这段代码的意义了。我们来看通知Advice,也就是我们要切入的类,接口和实现如代码清单12-29所示。
1700461104
1700461105
代码清单12-29 通知接口及实现
1700461106
1700461107
public interface IAdvice{
1700461108
1700461109
//通知只有一个方法,执行即可
1700461110
1700461111
public void exec();
1700461112
1700461113
}
1700461114
1700461115
public class BeforeAdvice implements IAdvice{
1700461116
1700461117
public void exec(){
1700461118
1700461119
System.out.println(“我是前置通知,我被执行了!”);
1700461120
1700461121
}
1700461122
1700461123
}
1700461124
1700461125
最后就是看我们怎么调用了,如代码清单12-30所示。
1700461126
1700461127
代码清单12-30 动态代理的场景类
1700461128
1700461129
public class Client{
1700461130
[
上一页 ]
[ :1.700461081e+09 ]
[
下一页 ]