场景阐述
前端在查询框选择全部的时候,传入了【全部】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);回写
该博客讲述了在前端查询时遇到的问题,当选择‘全部’选项时,后端无法匹配相应条件。为解决此问题,博主采用了Spring AOP的环绕通知(@Around)进行切面处理,将前端传入的‘全部’参数改为null,从而避免后端进行条件查询。通过@Around注解拦截特定包下的方法,并对参数进行修改,实现了参数的智能转换,提高了代码的可维护性和效率。
2684

被折叠的 条评论
为什么被折叠?



