http://blog.csdn.net/Intlgj/article/details/5671248 这篇文章里面介绍的非常好,值得阅读。
这里盗用里面的两张图片
【在没有AOP之前是这样的】
【使用AOP之后是这样的】
【横切之后,业务逻辑是这样的】
一些小而关键的概念
【切面关注点】,分布于应用多处的功能。如日志,安全等,这种功能从概念上讲是与业务逻辑分离的,但是在使用的时候,往往嵌入到应用的逻辑之中。
【通知 Advice】,切面要完成的“工作”(目标),切面的具体实现。通知同时定义了“工作”何时被执行,决定是在某一个方法之前,之后,之前或之后,还是在该方法抛出异常的时候执行。Spring定义了5中通知
1、Before -- 在调用某方法之前调用通知
2、After -- 在调用某方法之后调用通知
3、After-returning -- 在某方法成功被调用之后调用通知
4、After-throwing -- 在某方法调用之后调用通知
5、Around -- 通知包裹了被通知的方法,在被通知的方法之前或之后执行自定义的行为。《---比较绕,好好理解!!
【连接点】在应用被执行的过程中,能够插入一个切面的点。Spring只支持方法连接点。
【目标对象(Target)】就是那些即将切入切面的对象,也就是那些被通知的对象。
【代理对象(Proxy)】将通知应用到目标对象之后被动态创建的对象。
【织入Weaving】就是将切面应用到目标对象而创建代理对象的过程。