场景阐述
前端在查询框选择全部的时候,传入了【全部】2个字,后端拿到条件去查询的时候没有符合【全部】 这个条件的值, 由于这样的框太多一个一个去判断不现实,故采用AOP增强的方式切入到对应包下,修改前端传入的参数, 为【全部】 时,设置参数为null,后端不做条件查询。
AOP切面通知的类型
在基于Spring AOP编程的过程中,基于AspectJ框架标准,spring中定义了五种类型的通知,它们分别是:
前置通知 (@Before) 。
返回通知 (@AfterReturning) 。
异常通知 (@AfterThrowing) 。
后置通知 (@After)。
环绕通知 (@Around) :(优先级最高)
参数修改
@Around("execution(* org.jeecg.modules.ddp.controller.ddpReport.*.*(..))")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
//获取相关参数
Object[] arguments = joinPoint.getArgs();
for (Object arg : arguments) {
// 對象为 DdpReportIndustryInsurance
if (arg instanceof DdpReportIndustryInsurance){
arg=industryInsurance(arg);
}
// 對象为 DdpReportOverview
if (arg instanceof DdpReportOverview){
arg= overview(arg);
}
break;
}
// 脱敏参数
Object proceed = joinPoint.proceed(arguments);
return proceed;
}
说明一下:这里需要把“arguments ” 获取到的前端传入参数给弄出来修改,我这里传的是对象,转换方法很多,自己看着来。执行完了后通过: Object proceed = joinPoint.proceed(arguments);回写