定义
AOP术语
使用
总结
AOP:【动态代理】能在程序运行期间动态的将某段代码片段切入到指定的方法指定位置进行运行的编程方式;
-
导入aop模块,Spring AOP:(spring-aspects)
-
定义一个业务逻辑类(MathCalculator),在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、包括方法出现异常等等)
-
定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCalculator.div运行到哪里了然后执行切面类里面的方法就是通知方法:
- 前置通知(@Before):logStart,在目标方法(div)运行之前运行
- 后置通知(@After):logEnd,在目标方法(div)运行之后运行
- 返回通知(@AfterReturning):logReturn,在目标方法(div)执行返回(无论是正常返回还是异常返回)之后运行
- 异常通知(@AfterThrowing):logException,在目标方法(div)出现异常之后运行
- 环绕通知(@Around):动态代理,手动推进目标方法运行(joinPoint.procced())
-
给切面类的目标方法标注何时何地运行(通知注解):把通知方法应用到切入点方法之上
-
将切面类和业务逻辑类(目标方法所在的类)都加入到容器中;
-
必须要告诉Spring哪一个类是切面类(只要给切面类上加上一个注解:@Aspect)
-
给配置类中加入@EnableAspectJAutoProxy:开启基于注解的aop模式
主要把握三步:
一、将业务逻辑组件和切面类都加入到IOC容器中,并且告诉Spring哪一个是切面类(@Aspect)
二、在切面类上的每一个通知方法标注通知注解:告诉Spring何时何地运行(写好切入点表达式)
三、开启基于注解的AOP模式:@EnableAspectJAutoProxy