环绕通知:

它是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("最终通知");
    }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持免费资源网。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。