简单模仿Struts2实现AOP
Struts2非常巧妙地利用递归算法来实现AOP(Aspect Oriented Programming,面向切面编程),我们来简单模仿一下其执行流程。
Action接口
MyAction实现Action
Interceptor接口
下面分别是Interceptor的三个实现类
下面就是我们的总指挥ActionInvocation接口了
ActionInvocation的默认实现类DefaultActionInvocation,所有的调度都是在这里完成的
OMG,微软自带的截图工具居然不能支持长截图,下次找个好一点点的截图工具
好了,该测试一下了,看看效果,测试代码如下:
犹抱琵琶半遮面的测试结果露面了:
1,开始执行ChainingInterceptor====
2,开始执行LoggingInterceptor====
3,开始执行TimerInterceptor====
====Action执行====
3,结束执行TimerInterceptor====
2,结束执行LoggingInterceptor====
1,结束执行ChainingInterceptor====
2,开始执行LoggingInterceptor====
3,开始执行TimerInterceptor====
====Action执行====
3,结束执行TimerInterceptor====
2,结束执行LoggingInterceptor====
1,结束执行ChainingInterceptor====
测试成功,收工,有兴趣的可以往下看,简单看看Struts2执行流程的源码
上图:
ActionProxy从ActionMapping中获得namespace,name和method,之后调用execute方法
接着我们来看看ActionProxy的默认实现类DefaultActionProxy的execute方法
在上面是否惊喜的看到了invocation.invoke()方法,之后的流程就跟我们之前讲的很相似了,不过我们这里只是简单地涉及了一小部分源码
The secret to happiness is freedom. And the secret to freedom
is courage.
——Thucydides
模仿Struts2实现AOP
本文通过模仿Struts2的实现方式,介绍了如何使用递归算法来实现面向切面编程(AOP)。通过具体的代码示例展示了拦截器(Interceptor)的工作流程。
278

被折叠的 条评论
为什么被折叠?



