SpringBoot—AOP

AOP的概念:

   AOP(面向切面编程)是一种编程范式,底层用到了动态代理;
   AOP核心思想是将方法中重复的代码逻辑剥离出来,
   并在不修改原始逻辑的基础上对原始功能进行增强。

AOP的优点:

(1)不会改变代码的原始逻辑,无侵入;
(2)减少了代码的冗余,提高了代码的复用性;
(3)提高了项目的开发效率;
(4)使代码维护起来更加方便。

AOP的概念理解:

(1)连接点(JoinPoint):可以被AOP控制的方法执行(包含方法执行);
(2)通知(Advice):重复的逻辑代码;
(3)切入点(PointCut):匹配连接点的条件;
(4)切面(Aspect):通知+切点。

AOP入门步骤:

(1)在pom.xml中导入AOP的起步依赖;
(2)定义一个类,在类上添加@Aspect注解(表示当前类为一个切面类(Aspect)),
   再添加@Comment注解,标识当前类是被SpringIOC容器管理的been对象;
(3)在类中定义方法抽取重复逻辑的代码,并在方法上添加通知,例如:@Around(Advice)
(4)在通知注解中配置公共代码作用于哪些目标方法(PointCut);
(5)执行目标方法;

AOP中通知的类型:

(1)@Around:此注解标注的通知方法在目标方法前、后都执行并且@Around需要自己调用
   ProceedingJoinPoint.proceed()来让方法只能执行,其他通知则不需要考虑
(2)@Before:此注解标注的通知方法在目标方法前被执行
(3)@After:此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行
(4)@AfterReturning:此注解标注的通知方法在目标方法后执行,有异常不会执行
(5)@AfterThrowing:此注解标注的通知方法在发生异常后执行(有异常就会执行)

AOP中不同切面的通知,增强相同的方法,执行顺序是:

第一种排序:默认按照切面类的名称字母排序:
(1)目标前的通知方法:字母排名靠前的先执行
(2)目标后的通知方法:字母排名靠前的后执行
第二种排序:控制顺序(用@Order(数字)加在切面类上控制顺序):
(1)目标前的通知方法:数字小的先执行
(2)目标后的通知方法:数字小的后执行

AOP切点表达式:

第一种表达式:execution

第二种表达式:annotation

AOP中抽取多个通知的相同切点表达式:

   @PointCut:该注解的作用是将公共的切点表达式抽取出来,需要用到时引入该切点表达式即可
   在AOP中,可能会有多个通知的切入点都一样,这时候就需要使用@PointCut注解把重复的切
   点表达式抽取出来放到一个公共方法中,其他方法需要时就调用它。

 

AOP中连接点可以获取那些信息:

   连接点简单来说就是目标方法;
   可以获取方法执行时的相关信息,比如方法名,方法参数类型,方法实际参数等。
   对于 @Around 通知,获取连接点信息只能使用  ProceedingJoinPoint;
   对于其他四种通知,获取连接点信息只能用 JoinPoint ,它是 ProceedingJoinPoint 的父类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值