spring - 使用 Spring AOP 获取特定的标头参数?
问题描述
我创建了 Spring Boot REST API,其中所有端点都将具有标头参数“sessionGuid”。我想使用 AOP 打印那个 sessionGuid。
@Before("PointcutDefinition.controllerLayer()")
public void beforeAdvice(JoinPoint joinPoint)
{
Object[] signatureArgs = joinPoint.getArgs();
for (Object signatureArg : signatureArgs)
{
System.out.println("Arg: " + signatureArg);
}
}
上面的代码正在打印所有参数,即如果我的 URL 是
{{base-url}}/v1/login/users/SOMENAME/status 它正在打印 SOMENAME(路径变量)和“sessionGuid”值。我只想打印标题参数“sessionGuid”中的值。
joinPoint.getArgs(); 正在返回一个数组。我不想打印像 arg[1] 这样的东西,因为 sessionGuid 可能是不同操作中的第三或第四个参数。
有没有一种方法可以让我从标题中只打印“sessionGuid”。
解决方案
如果您正在寻找解决问题的方法,您可以直接使用RequestContextHolder
.
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String header = request.getHeader("sessionGuid")
如果您想更通用,也可以使用反射 API。
推荐阅读
- c# - 从 datagridview 复制到剪贴板
- tensorflow - CNN 准确率增加,而损失减少增加
- c# - C# - 'int' 和
- swift - Swift 错误答案中的迭代中序遍历
- postgresql - 如何优化超表的插入速度?
- python - 在 Google Cloud 机器学习引擎上训练 TensorFlow 对象检测模型时出错
- coded-ui-tests - 无法在编码的 ui 中获取 WinTable 的列标题
- c# - $facet 没有反序列化
- android - 如何将 asm 代码块嵌入到使用 clang 编译并将在 Android 上运行的 c 程序中
- linux - bash 脚本从 bash 脚本添加 git 凭据