后置通知 ‹aop∶afterreturning›

Exisi 2022-11-28 08:31:54
Categories: Tags:

语法

<aop:afterreturning method="执行方法" pointcut="切入表达式"/>

<aop:afterreturning method="执行方法" pointcut-ref="切入表达式id" />

 

参数

描述

method

在通知类中设置当前通知类别对应的方法

pointcut

设置当前通知对应的切入点表达式,不能同时使用pointcut-ref

pointcut-ref

设置当前通知对应的切入点id,不能同时使用pointcut

示例

<aop:aspect ref="adviceId">

    <!--直接配置切入点-->

    <aop:after-returning method="doAfterReturning" pointcut="execution(* com.exi.service.LogApectHandler.*.*(..))"/>

</aop:aspect>

 

<aop:pointcut id="pt" expression="execution(* com.exi.service.LogApectHandler.*.*(..))"/>

<aop:aspect ref="adviceId">

    <!--使用公共切入点-->

    <aop:before method="doAfterReturning" pointcut-ref="pt"/>

</aop:aspect>

 

public class LogAspectHandler {

    /**

     * 在上面定义的切面方法返回后执行该方法,可以捕获返回对象或者对返回对象进行增强

     * @param joinPoint joinPoint

     * @param result result

     */

    @AfterReturning(pointcut = "pointCut()", returning = "result")

    public void doAfterReturning(JoinPoint joinPoint, Object result) {

 

        Signature signature = joinPoint.getSignature();

        String classMethod = signature.getName();

        log.info("方法{}执行完毕,返回参数为:{}", classMethod, result);

        // 实际项目中可以根据业务做具体的返回值增强

        log.info("对返回参数进行业务上的增强:{}", result + "增强版");

    }

}

 

运行结果:

 

方法 testAop 执行完毕,返回参数为:Hello CSDN 

对返回参数进行业务上的增强:Hello CSDN 增强版