Spring AOP知识点总结

什么是AOP

AOP:(Aspect Oriented Programming)面向切面编程。面向切面编程是一种编程范式,它做为OOP面向对象编程的一种补充,用于处理系统中分布于各个模块的横切关注点,好比事务管理、权限控制、缓存控制、日志打印等等。express

AOP 它是一种设计模式,用于实现一个系统中的某一个方面的应用。编程

image

AOP 好处

  • 每一个事物逻辑位于一个位置, 代码不分散, 便于维护和升级
  • 业务模块更简洁, 只包含核心业务代码。
  • 侵入性少,加强代码可读性及可维护性。

AOP的术语

1.Join point(链接点)
Spring 官方文档的描述:设计模式

A point during the execution of a program, such as the execution of a method or the handling of an exception. In Spring AOP, a join point always represents a method execution.

程序执行过程当中的一个点,如方法的执行或异常的处理。在Spring AOP中,链接点老是表示方法的执行。通俗的讲,链接点即表示类里面能够被加强的方法 缓存

2.Pointcut(切入点)
Spring 官方文档的描述:框架

Pointcut are expressions that is matched with join points to determine whether advice needs to be executed or not. Pointcut uses different kinds of expressions that are matched with the join points and Spring framework uses the AspectJ pointcut expression language

切入点是与链接点匹配的表达式,用于肯定是否须要执行通知。切入点使用与链接点匹配的不一样类型的表达式,Spring框架使用AspectJ切入点表达式语言。咱们能够将切入点理解为须要被拦截的Join point spa

3.Advice(加强/通知)
所谓通知是指拦截到Joinpoint(链接点)以后所要作的事情就是通知,通知分为前置通知、后置通知、异常通知、最终通知和环绕通知(切面要完成的功能) 翻译

4.Aspect(切面)
Aspect切面表示Pointcut(切入点)和Advice(加强/通知)的结合设计

Advice注解

Advice注解一共有五种,分别是:
1.@Before前置通知
前置通知在切入点运行前执行,不会影响切入点的逻辑
2.@After后置通知
后置通知在切入点正常运行结束后执行,若是切入点抛出异常,则在抛出异常前执行
3.@AfterThrowing异常通知
异常通知在切入点抛出异常前执行,若是切入点正常运行(未抛出异常),则不执行
4.@AfterReturning返回通知
返回通知在切入点正常运行结束后执行,若是切入点抛出异常,则不执行
5.@Around环绕通知
环绕通知是功能最强大的通知,能够在切入点执行先后自定义一些操做。环绕通知须要负责决定是继续处理join point(调用ProceedingJoinPointproceed方法)仍是中断执行日志

总结/理解

那么问题来了,什么是“面”?以及什么“面向切面编程”? code

AOP被翻译成“面向切面编程”,因此这里我更倾向于将“面”理解为“切面”(Aspect)。

从字面上理解,“切面”来自几何学,在立体几何中,切面是指用一个平面去截一个几何体(包括圆柱,圆锥,球,棱柱,棱锥、长方体,正方体等等),获得的平面图形。

那什么是“面向切面编程”?就是在该切面上加入一些逻辑操做(能够简单理解为“对切面的操做”)。

举个例子:
好比 “斗地主”:
第一把不知道谁是地主,因而咱们将一张牌,反过来查入到扑克牌当中。原本应该按照顺序摸牌,并不能知道谁是地主,可是由于你在某个位置插入了一个特殊操做(将一张牌反插入),由于多了一个逻辑(谁摸到这张反插的排,谁就是地主),因此能够知道谁是地主。

对“面向切面的编程”的最基础理解就是这样。

相关文章
相关标签/搜索