简单模仿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












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值