Spring AOP实践(三)基础篇上
来源:互联网 发布:高德地图js定位 编辑:程序博客网 时间:2024/05/08 21:13
在Spring AOP实践(一)中已经总结了一些基础知识。AOP作为OOP的补充,完整了编程实践的方式。虽然java以面向对象语言著称,但是也不能总是言必设计模式。面向对象设计的基本模块化单元是类,而AOP的基本模块化单元是切面(aspect)。
在Spring AOP实践(一)中讲到,AOP要解决的问题是“遇到某某情况,就做某某事”,放到AOP中就是预定好在某种情况下拦截某个方法,并且做什么事。如同代理一样,我们可以在方法执行前,或者执行后做一定的操作,或者是不去调用实际的方法而是从缓存返回,又或者遇到异常就做什么事情。其实这些都是编程中经常遇到的情况,所以才会有AOP。
上面所说的某种情况在AOP中就叫“切入点”(Join point),比如执行某个方法时,或者某类方法,或者某个异常等等。
被拦截后做的事情,叫做Advice,中文一般翻译为“通知”,这个翻译我有点不能理解,advice本意是建议,在AOP中,advice应该是拦住对方并建议做什么事的意思,有点“劝阻建言”的意思,翻译为通知则完全没有那个意境了。
切入点和Advice的集合就是一个切面,可以想象成一个滤网,滤网也是一个面,这个面拦在管道中间,通过的水流都必须先经过它。
Pointcut,可以理解为一个动词,“点切入”,定义了匹配一个接入点的表达式。
Spring AOP除了完善OOP,成为另外一种编程思维,更重要的是它使得声明式企业服务( declarative enterprise services)变得简单。Spring的声明式事务处理甚至比AOP都要出名,而它的实现就是得益于AOP。
Spring定义以下几种advice的方式:
Before advice:顾名思义,在一个切入点被执行前执行。请注意,它不影响真正方法的调用,也就是说真实的方法会在他调用之后被调用,如果你希望它拦截真实的方法并且不再执行真实的方法,那么不能用这个advice。
After returning advice:在方法正常return之后执行,如果方法被exception中断则不会执行。
After throwing advice:与上一个正好相反,如果说上一个是正常流程,那这个就是异常流程。
After (finally) advice: 只要看到finally,那就是说不管方法执行的结果是成功还是失败,这个advice是一定会执行的。
Around advice: 这是最全面的情况。如同自己写代理方法一样,在代理方法中调用原方法。这个时候就可以决定什么情况下调用原方法,什么情况下不调用了。
具体的例子在上一篇中已经有总结。
- Spring AOP实践(三)基础篇上
- Spring AOP 实践(五)基础篇下
- Spring旅程(三) AOP--Spring AOP容器基础
- Spring AOP实践(二)编程篇
- (三)Spring AOP
- Spring(三)AOP
- Spring AOP(上)
- Spring(三、Spring AOP)
- Spring 切面 AOP基础 之三
- Spring AOP 基础(一)
- Spring AOP 基础(二)
- Spring实践:面向切面编程(AOP)
- Spring AOP实践
- spring aop 实践
- spring AOP 最佳实践
- Spring 实践 -AOP
- Spring 实践:AOP
- 10016---Spring-AOP实践
- 数据结构上机测试1:顺序表的应用
- Light OJ - 1008 - Fibsieve`s Fantabulous Birthday (数学找规律)
- 获取0到max之间的随机数
- iOS多线程编程(一)------ 基本概念
- (四十二)、多线程
- Spring AOP实践(三)基础篇上
- uml四种状态之java类与类之间的关系
- Django(一)
- 关于MongoDB
- 【华为练习题】 爬梯问题
- POJ 1127 Jack Straws (判断两线段相交)
- 在指定文件夹内随机选一个文件
- 2016夏季练习
- 同步器