前文使用 AOP 拦截器做了日志记录,但是如果我们要拦截并终止方法执行呢?
其实很简单,我们使用 @Around 环绕通知 来实现即可,代码如下:
//环绕通知,环绕增强,相当于MethodInterceptor
@Around("webLog()")
public Object arround(ProceedingJoinPoint pjp) {
System.out.println("HH 方法环绕start.....");
try {
Object ret = null;
// TODO: 此处为自定义验证逻辑,符合条件则继续执行,否则终止方法的执行
if (1 == 1) {
// 执行方法
ret = pjp.proceed();
System.out.println("HH 方法环绕proceed,结果是 :" + ret);
} else {
System.out.println("HH 方法环绕proceed,不满足条件未执行");
}
return ret;
} catch (Throwable e) {
e.printStackTrace();
return null;
}
}