戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注
切面发布-环绕通知
spring应用手册(第三部分)
所谓环绕通知就是在目标方法的前后可以通知增强,正因为这样的情况,所以环绕通知可以阻止方法的执行,或者修改方法的返回值。
环绕通知也可以传入一个参数ProceedingJoinPoint,ProceedingJoinPoint 是Joinpoint的一个子类,增强了一些方法,我们可以通过ProceedingJoinPoint 的proceed()调用被增强方法。
看案例:
修改Aspect类,在其中增加一个环绕通知:
/**
* @author 戴着假发的程序员
*
* @description
*/
@Component
@Aspect
public class DkAspect {
@Pointcut("execution(* com.st.dk.demo8.service..*.*(..))")
public void pointcut1(){}
/**
* 环绕通知,传入参数ProceedingJoinPoint
* */
@Around("pointcut1()")
public Object around(ProceedingJoinPoint joinPoint){
Object retVal = null;
System.out.println("--环绕通知开始--");
//执行目标方法
try {
//这里可以根据条件判断是否要执行目标方法
retVal = joinPoint.proceed();
//可以修改目标方法返回值
retVal = "环绕通知修改后的返回值";
} catch (Throwable throwable) {
throwable.printStackTrace();
}
System.out.println("--环绕通知结束--");
return retVal;
}
}
测试:
注意,如果目标方法出现异常程序中断,环绕通知就会只执行前半部分,后半部分就会执行。