idea__Spring5框架13——基于XML的AOP———五种常用通知类型,配切入点表达式(新标签)

涉及到的新标签: <aop:after-returning>, <aop:after-throwing>, <aop:after>,<aop:pointcut>

一、四种常用通知类型

我们修改一下Logger类,添加多三个方法。

在这里插入图片描述
接着,我们配置一下四个通知,用到了三个新的标签。

<aop:after-returning>, <aop:after-throwing>, <aop:after>

在这里插入图片描述
运行测试一下,没有问题。

在这里插入图片描述
我们发现并没有异常通知,因为我们的程序没有产生异常通知,所以没有,那么我们现在对service改造一下,我们给他加上一个异常。

在这里插入图片描述
接着运行一下,没有问题,异常通知有了,但我们发现后置通知没有了,因为它跟后置通知只能有一个。

在这里插入图片描述

二、配置切入点表达式

我们发现,我们上面的切入点表达式,大多数都是相同的,那有没有更好的简单的方式呢?
答案肯定是有的,可以另行配置,缩减。

这就用到了一个新标签:<aop:pointcut>

直接看图片吧:

在这里插入图片描述
我们运行测试一下,没有任何问题。

在这里插入图片描述
那么现在,我们把这个标签从<aop:aspect>标签内移出来,放到下面去,我们发现它红线报错了,什么原因呢?

在这里插入图片描述
这是因为我们导入的约束导致的,约束已经做了规定,不能这样写,有规定的写法,位置。

在这里插入图片描述
我们必须把它放在<aop:aspect>标签的前面就可以了,不能放在后面,这样就不会报错了。

在这里插入图片描述

三、最后一种通知类型:环绕通知

用到一个新标签:<aop:around>

我们先把之前的四种通知类型给注释上,再写一个环绕通知。我们发现环绕通知报错了,因为它还没有这个方法,我们待会把它加上去就可以了。

在这里插入图片描述
我们把环绕通知的方法写上去

在这里插入图片描述
接着,我们运行测试一下,我们发现一个非常奇怪的问题,我们的环绕方法执行了,可以调用的service方法并没有执行,为什么呢?

在这里插入图片描述
接下来,我们就分析一下:直接看图吧

在这里插入图片描述

我们讲的四种通知类型都是通过配置的方式来手动指定,来通过配置指定增强的代码什么时候执行,而现在我们是通过使用代码控制的方式来指定增强的代码何时执行。
所以说,spring的环绕通知它有另外的一种解释:

   它是spring框架为我们提供的一种可以在代码中手动控制增强方法何时执行的方式。

也就是说,我们除了靠配,可以实现,也可以通过自己编码来实现,那自己编码的实现方式就是环绕通知的方式。

————————
创作不易,如觉不错,随手三连点赞,收藏,关注,谢谢~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值