简单模仿Struts2实现AOP

简单模仿Struts2实现AOP

Struts2非常巧妙地利用递归算法来实现AOPAspect Oriented Programming,面向切面编程),我们来简单模仿一下其执行流程。

Action接口

MyAction实现Action

Interceptor接口

下面分别是Interceptor的三个实现类






下面就是我们的总指挥ActionInvocation接口了

ActionInvocation的默认实现类DefaultActionInvocation,所有的调度都是在这里完成的

OMG,微软自带的截图工具居然不能支持长截图,下次找个好一点点的截图工具

好了,该测试一下了,看看效果,测试代码如下:


犹抱琵琶半遮面的测试结果露面了:

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












阅读更多

没有更多推荐了,返回首页