通过实例解析spring环绕通知原理及用法

作者:Y_wee 时间:2022-12-26 23:33:20 

环绕通知:

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

问题:

当我们配置了环绕通知之后,增强的代码执行了,业务核心方法没有执行。

分析:

通过 * 我们知道在invoke方法中,有明确调用业务核心方法:method.invoke()。

我们配置的环绕通知中,没有明确调用业务核心方法。

解决:

spring框架为我们提供了一个接口:ProceedingJoinPoint,它可以作为环绕通知的方法参数在环绕通知执行时,spring框架会为我们提供该接口的实现类对象,我们直接使用就行。该接口中有一个方法proceed(),此方法就相当于method.invoke()

代码:


 /**
  * 环绕通知
  */
 public void aroundInform(ProceedingJoinPoint pjp){
   System.out.println("前置通知");
   try {
     pjp.proceed();
     System.out.println("后置通知");
   } catch (Throwable throwable) {
     System.out.println("异常通知");
   }finally {
     System.out.println("最终通知");
   }
 }

来源:https://www.cnblogs.com/Y-wee/p/13822283.html

标签:spring,环绕,通知
0
投稿

猜你喜欢

  • vscode编写latex的方法

    2022-05-21 13:30:52
  • android fm单体声和立体声的切换示例代码

    2023-04-19 11:06:56
  • Android Flutter实现有趣的页面滚动效果

    2023-02-14 06:58:10
  • java多线程编程之join方法的使用示例

    2022-10-06 05:09:38
  • c#根据网址抓取网页截屏生成图片的示例

    2021-08-31 14:29:13
  • Java AQS信号量Semaphore的使用

    2021-06-11 17:10:44
  • mybatis createcriteria和or的区别说明

    2021-09-27 09:20:40
  • C#调用新浪微博API实例代码

    2022-12-21 14:02:15
  • C# 使用Fluent API 创建自己的DSL(推荐)

    2022-03-30 23:36:48
  • C#中Web.Config加密与解密的方法

    2022-11-25 05:31:06
  • C# 创建高精度定时器的示例

    2023-03-09 12:35:58
  • SpringCloud-Alibaba-Nacos启动失败解决方案

    2023-12-19 05:34:45
  • C++11中std::packaged_task的使用详解

    2022-03-12 20:08:23
  • 基于Mybatis映射的一点心得(分享)

    2023-08-08 13:15:53
  • Android 第三方应用接入微信平台研究情况分享(二)

    2022-01-20 10:10:38
  • dubbo服务链路跟踪方式

    2023-08-24 09:54:21
  • android I/0流操作文件(文件存储)

    2021-11-13 19:42:37
  • springboot搭建访客管理系统的实现示例

    2023-09-02 13:10:41
  • C# 开发日志本地化工具

    2023-08-27 21:57:05
  • Android利用Hero实现列表与详情页无缝切换动画

    2023-07-22 08:04:39
  • asp之家 软件编程 m.aspxhome.com