AOP切面(是一种思想)

AOP切面(是一种思想) 一、什么是AOPAOP面向切面编程aspect oriented programmingOOP面向对象编程的语言有Java c python面向切面编程面向方面编程可简单理解为就是面向特定方法编程从而实现一些比较通用的操作。Aroud注解代表当前AOP针对于com.itheima.service这个包下所有的接口、类的所有方法进行编程二、SpringAOP快速入门开发步骤1.导入依赖在pom.xml中引入AOP的依赖2.编写AOP程序针对于特定的方法根据业务需求进行编程2.1要先声明一个AOP类在该类上加入Aspect-(声明当前类不是一个普通类而是一个AOP类)和Component-(交给Spring管理)2.2调用pjp.proceed( );运行原始方法2.3 pjp.getSignature( );获取当前方法的签名三、AOP核心概念连接点JoinPoint可以被AOP控制的方法通知Advice,指那些重复的逻辑也就是共性功能最终体现为一个方法切入点PointCut匹配连接点的条件通知仅会在切入点方法执行时被应用实际被AOP控制的方法叫切入点切面Aspect描述通知与切入点的对应关系也就是通知切入点目标对象Target通知所应用的对象2.AOP执行流程四、AOP进阶1.通知类型根据通知方法执行时机不同将同种类型分为一下常见的五类Aroud : 环绕通知此注解标注的通知方法在目标方法前、后被执行Before前置通知此注解标注的通知方法在目标前执行After后置通知此注解标注的通知方法在目标方法后被执行无论是否有异常都会执行AfterReturning返回通知此注解标注的通知方法在目标方法后被执行有异常不会执行AfterThrowing异常通知此注解标注的通知方法发生异常后执行注意Around环绕通知需要自己调用ProceedingJoinPoint.proceed( )来让原始方法执行其他通知不需要考虑目标方法执行。Around环绕通知方法的返回值必须指定为Object来接收原始方法的返回值2.PointCut( )该注解的作用是将公共的切点表达式抽取出来需要用到时引用该切入点表达式即可3.通知顺序当有多个切面的切入点都匹配到了目标方法目标方法运行时多个通知方法都会被执行执行顺序1. 不同切面类中默认按照切面类的类名字母排序目标方法前的通知方法字母排序靠前的先执行目标方法后的通知方法字母排名靠前的后执行2.用Order(数字)加在切面类上来控制顺序目标方法前的通知方法数字小 的先执行目标方法后的通知方法数字小的后执行4.切入点表达式1.基于切入点表达式——execution2.基于切入点表达式——annotationannotation切入点表达式用于匹配标识有特定注解的方法Target(ElementType.METHOD)//指定我们当前的注解只能加在方法上Retention(RetentionPolicy.RUNTIME)//指定注解作用的时间点5.连接点在Spring中使用JoinPoint抽象了连接点用它可以获得方法执行时的相关信息如目标类名、方法名、方法参数等。对于Around通知获取连接点信息只能使用 ProceedingJoinPoint对于其他四种通知获取连接点信息只能使用JoinPoint它是ProceedingJoinPoint的父类型.