新版SpringCloudGateway网关 切面修改方法入参
通过注解修改方法入参值,一般都是采用实现
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网关 切面修改方法入参相关推荐
- aspectj 获取方法入参_深入探索编译插桩技术(二、AspectJ)
本文来自jsonchao的投稿,个人微信:bcce5360 现如今,编译插桩技术已经深入 Android 开发中的各个领域,而 AOP 技术正是一种高效实现插桩的模式,它的出现正好给处于黑暗中的我们带 ...
- Spring-AOP @AspectJ进阶之绑定连接点方法入参
文章目录 概述 实例 概述 我们前面的博文在讲解切点函数时说过args().this().target().@args().@within().@target()和@annotation()这7个函数 ...
- aop 获取方法入参出参_ASM字节码编程 | JavaAgent+ASM字节码插桩采集方法名称及入参和出参结果并记录方法耗时...
作者:小傅哥 博客:bugstack.cn ❝ 沉淀.分享.成长,让自己和他人都能有所收获! ❞ 一.前言 在我们实际的业务开发到上线的过程中,中间都会经过测试.那么怎么来保证测试质量呢?比如:提交了 ...
- 方法入参很复杂,每次调用都要构造BO入参?一招教你自动构造入参
场景 同在互联网打工的小伙伴们肯定都面临这样一种场景: 通用逻辑(被多处调用)我们通常会封装成一个方法,那这个方法入参正常来说都不会少,(在开发规范中,经常会看到一条"方法入参正常不超过3个 ...
- aspect 方法入参 获取_谈谈Spring AOP中@Aspect的高级用法示例
前言 本文主要跟大家分享介绍了关于Spring AOP中@Aspect的高级用法,下面话不多说了,来随着小编一起看看详细的介绍吧. 1 切点复合运算 支持在切点定义中加入以下运算符进行复合运算: 运算 ...
- Mybatis方法入参处理
1,在单个入参的情况下,mybatis不做任何处理,#{参数名} 即可,甚至连参数名都可以不需要,因为只有一个参数,或者使用 Mybatis的内置参数 _parameter. 2,多个入参: 接口方法 ...
- spring特殊字符转义和方法入参检测工具类
由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的问题.下面是 Web ...
- 2021 Spring 自定义注解 +AOP +方法入参
不同于用JoinPoint获取方法的参数值,这种直接注入参数的方式简洁又方便 一:aop 实现类 @Aspect @Component public class CacheDelByRegexAop{ ...
- java 入参校验_Java Validation方法入参校验实现过程解析
一.前言 在日常的开发中,经常需要对方法参数进行校验(非空.长度等).如果采用hardcode去校验(if..else..),会造成代码冗余,复用性低,导致维护成本比较高.借助Validation组件 ...
最新文章
- AutoML前沿技术与实践经验分享 | 免费报名
- 微信APP支付(Java后台生成签名具体步骤)
- 光纤交换机是什么,光纤交换机的作用是什么?
- array sort - 4 : merge sort
- 利用cookies跳过登陆验证码
- 学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘)
- java对象赋值优雅写法_看看人家写的API,那才叫优雅!
- stride padding_关于Padding实现的一些细节
- Hive语言手册-ORC
- windwos 10打印机服务老是自动关闭
- MES管理端介绍,ebr二次开发产品—SIMATIC IT EBR(Opcenter Execution Pharma)
- 最新时空观测结果证实爱因斯坦相对论合理性
- Ajax的Promise应用
- 请你相信心有多大,舞台就会有多大
- selenium不定位元素直接操作键盘之Keys.CONTROL
- 抖音二面:计算机网络-应用层
- 阿里云服务器被挖矿的解决方法
- JavaScript最新面试题
- 达梦8,关于参数CTAB_SEL_WITH_CONS的验证
- 易语言对象--Word之精确定位表格单元格中并写入文本