通过注解修改方法入参值,一般都是采用实现

org.springframework.web.method.support.HandlerMethodArgumentResolver 接口的
resolveArgument方法来做的

实现此接口之后,还需要另外创建一个bean来实现

WebMvcConfigurer 接口

添加参数解析器

但是由于springCloudGateway新版本  (2.2.x +)之后,似乎彻底移除除了spring-mvc系列的依赖包,导致这种切面方式不可用

(也不能手动添加spring-web....一些列的依赖到网关服务里,加上去启动报错)。

所以修改参数的切面只能使用@Aspect 注解达到切面效果

需要注意的是@Aspect注解只有@Around("pointCut()") 的方法可以改写入参,@Before以及其他几个拦截器无法返回参数

样例如下,将参数前使用@LoginUser的参数注入已经登录的相关信息。

切入点的公式可以直接复制,改下包名和自定义注解路径即可

@Aspect
@Component
public class LoginUserAspect {@Autowiredprivate AuthFeign authFeign;// 配置织入点@Pointcut("execution(public * com.xqoo..*(.., @com.xqoo.feign.annotations.LoginUser (*), ..))")public void pointCut() {}@Before("pointCut()")public void beforeMethod(JoinPoint joinPoint) {}@Around("pointCut()")public Object around(ProceedingJoinPoint pjp) throws Throwable {Object returnModel;//获取请求头HttpServletRequest request = ServletUtils.getRequest();String token = request.getHeader(SystemPublicConstant.AUTH_HEADER_KEY_NAME);//获取目标方法的参数信息Object[] obj = pjp.getArgs();for (int i = 0; i < obj.length; i++) {if (obj[i] instanceof CurrentUser) {if(StringUtils.isEmpty(token)){obj[i] = new CurrentUser();break;}obj[i] = FeignReturnDataGzip.Unzip(authFeign.getLoginUserInfo(token), CurrentUser.class);break;}}returnModel = pjp.proceed(obj);return returnModel;}}

springCloudGateway 版本 2.2.5,springBoot版本不受影响,依然可以添加spring-web系列依赖

新版SpringCloudGateway网关 切面修改方法入参相关推荐

  1. aspectj 获取方法入参_深入探索编译插桩技术(二、AspectJ)

    本文来自jsonchao的投稿,个人微信:bcce5360 现如今,编译插桩技术已经深入 Android 开发中的各个领域,而 AOP 技术正是一种高效实现插桩的模式,它的出现正好给处于黑暗中的我们带 ...

  2. Spring-AOP @AspectJ进阶之绑定连接点方法入参

    文章目录 概述 实例 概述 我们前面的博文在讲解切点函数时说过args().this().target().@args().@within().@target()和@annotation()这7个函数 ...

  3. aop 获取方法入参出参_ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称及入参和出参结果并记录方法耗时...

    作者:小傅哥 博客:bugstack.cn ❝ 沉淀.分享.成长,让自己和他人都能有所收获! ❞ 一.前言 在我们实际的业务开发到上线的过程中,中间都会经过测试.那么怎么来保证测试质量呢?比如:提交了 ...

  4. 方法入参很复杂,每次调用都要构造BO入参?一招教你自动构造入参

    场景 同在互联网打工的小伙伴们肯定都面临这样一种场景: 通用逻辑(被多处调用)我们通常会封装成一个方法,那这个方法入参正常来说都不会少,(在开发规范中,经常会看到一条"方法入参正常不超过3个 ...

  5. aspect 方法入参 获取_谈谈Spring AOP中@Aspect的高级用法示例

    前言 本文主要跟大家分享介绍了关于Spring AOP中@Aspect的高级用法,下面话不多说了,来随着小编一起看看详细的介绍吧. 1 切点复合运算 支持在切点定义中加入以下运算符进行复合运算: 运算 ...

  6. Mybatis方法入参处理

    1,在单个入参的情况下,mybatis不做任何处理,#{参数名} 即可,甚至连参数名都可以不需要,因为只有一个参数,或者使用 Mybatis的内置参数 _parameter. 2,多个入参: 接口方法 ...

  7. spring特殊字符转义和方法入参检测工具类

    由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的问题.下面是 Web ...

  8. 2021 Spring 自定义注解 +AOP +方法入参

    不同于用JoinPoint获取方法的参数值,这种直接注入参数的方式简洁又方便 一:aop 实现类 @Aspect @Component public class CacheDelByRegexAop{ ...

  9. java 入参校验_Java Validation方法入参校验实现过程解析

    一.前言 在日常的开发中,经常需要对方法参数进行校验(非空.长度等).如果采用hardcode去校验(if..else..),会造成代码冗余,复用性低,导致维护成本比较高.借助Validation组件 ...

最新文章

  1. AutoML前沿技术与实践经验分享 | 免费报名
  2. 微信APP支付(Java后台生成签名具体步骤)
  3. 光纤交换机是什么,光纤交换机的作用是什么?
  4. array sort - 4 : merge sort
  5. 利用cookies跳过登陆验证码
  6. 学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘)
  7. java对象赋值优雅写法_看看人家写的API,那才叫优雅!
  8. stride padding_关于Padding实现的一些细节
  9. Hive语言手册-ORC
  10. windwos 10打印机服务老是自动关闭
  11. MES管理端介绍,ebr二次开发产品—SIMATIC IT EBR(Opcenter Execution Pharma)
  12. 最新时空观测结果证实爱因斯坦相对论合理性
  13. Ajax的Promise应用
  14. 请你相信心有多大,舞台就会有多大
  15. selenium不定位元素直接操作键盘之Keys.CONTROL
  16. 抖音二面:计算机网络-应用层
  17. 阿里云服务器被挖矿的解决方法
  18. JavaScript最新面试题
  19. 达梦8,关于参数CTAB_SEL_WITH_CONS的验证
  20. 易语言对象--Word之精确定位表格单元格中并写入文本

热门文章

  1. 哈佛图书馆自习室墙上的20条训言(中英文)
  2. 为什么这位俄罗斯亿万富翁要为音乐节和音乐会创造一个虚拟现实世界?
  3. linux下载finger程序,Linux的finger命令
  4. iOS 开发者都该认真思考的问题 (精华)
  5. 【真人手势动画制作软件】万彩手影大师教程 | 如何让2个对象同时播放
  6. qpython3打开app_QPython3
  7. Windows 2000 单词表
  8. Excel 2010 VBA 入门 129 利用窗体向工作表中录入数据
  9. Origin使用自定义函数拟合曲线函数
  10. 【精讲】微信小程序 基础内容(组件)入门