HttpServletRequest 详细信息使用 @Async Spring 返回 null

2023-12-12

我想提取传入请求的 URI。

我的应用程序中有以下代码 - a@RequestMapping这是@Async。我想通过提取路径 URIrequest.getRequestURI()但它返回null当。。。的时候@Async注释存在,否则,当注释不存在时,输出将根据需要进行。这是有意的行为吗?如果是的话,为什么?我怎样才能获得相同的输出@Async?去除@Async对我来说这不是一个简单的选择,因为我想用它来提高性能。

@Async
@RequestMapping("{name}/**")
@ResponseBody
public void incomingRequest(
        @PathVariable("name") String name,
        HttpMethod method,
        HttpServletRequest request,
        HttpServletResponse response)
{
    String URI = request.getRequestURI(); // <-- null with @Async
}

看来一般来说,所有与请求相关的参数都会丢失,这不是我想要的;我需要为我的程序提取它们。


最接近空原因的线索HttpServletRequest我可以找到对这篇文章的答案的评论:HttpServletRequest 对象的生命周期是怎样的?

要解决您的问题,您可以在这里尝试两种方法:

  1. 由于你的方法是void您可以手动启动一个新线程incomingRequest方法使用,例如,完整的未来.

  2. 或者,尝试返回CompletableFuture从你的方法来看,像这样:

@Async
@RequestMapping("{name}/**")
@ResponseBody
public CompletableFuture<Void> incomingRequest(
        @PathVariable("name") String name,
        HttpMethod method,
        HttpServletRequest request,
        HttpServletResponse response)
{
    String URI = request.getRequestURI(); // should get the right non null path
    return CompletableFuture.completedFuture(null);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpServletRequest 详细信息使用 @Async Spring 返回 null 的相关文章

随机推荐

  • 如何在经典asp中实现同步器令牌模式

    为了防止 CSRF 我想在我的经典 asp 应用程序中实现同步器令牌模式 我知道我应该在 session onstart 中生成一个令牌 我不明白的是如何生成这样的令牌 因为它应该是随机且唯一的 所以简单的 Rnd 和随机化是行不通的 对吧
  • 对已排序 Int 数组进行排序

    有没有一种简短而干净的方法来比较两个已排序的数组Int Like 1 4 7 应该先于 1 5 但是之后 1 2 3 8 嵌套的 for 循环可以做到这一点 但我发现它很麻烦 一个可能的实现 内联解释 现已针对 Swift 3 4 5 进行
  • C文件大小差异

    我正在尝试学习 C 目前正在编写一个玩具脚本 现在 它只是打开一个文本文件 逐个字符地读取它 然后 将其吐出到命令行上 我查找了如何查看文件的大小 使用 fseek 然后使用 ftell 但它返回的结果与我在迭代文件时在 while 循环中
  • 如何获取 PPID

    我正在开发 MS Windows C Winform 项目 但无法获取 PPID 父进程 ID 我找到了很多解决方案 但似乎没有一个适用于所述操作系统和语言 我如何获得 PPID 如果您可以使用 System Management 那就很简
  • 在字符串中使用条件运算符?

    如何在字符串中使用条件运算符 为什么缺少该字符串的值TO DATE and 单引号 我能做什么来解决它 StringBuilder sb new StringBuilder code sb AppendLine txtStatus Text
  • 如何使用 Jest 模拟 SQL Server 连接池?

    我正在尝试为一个使用的函数编写一个笑话单元测试mssql import as sql from mssql let pool sql ConnectionPool null export async function handler if
  • 隐藏/显示 ngFor 内的单个项目

    我需要显示 隐藏组件的一部分 这是 Angular2 的例子 li a href Click a div Hide div li 假设我们只有 2 个项目 这里的问题是它适用于这两个项目 所以它隐藏并显示 div 部分both成分 如果我们
  • 哪些 VertexList 类型对深度优先搜索有效

    当在 adjacency list 中使用 boost vecS 作为 VertexList 时 boost depth first search Graph Visitor 编译并正常工作 当将 VertexList 类型切换为 boos
  • Visual Studio 2012 中的 MySQL NET Connect 6.7.2

    我已经安装了 MySQL NET Connector 6 7 2 但目前无法让 Visual Studio 2012 识别出该连接器已安装 beta 连接器有什么技巧吗 我在 MySQL 开发人员博客中看到 从连接器的 6 7 X 版本开始
  • DropDownListFor 未设置选定值

    我有一个使用 HTML 帮助器 DropDownListFor 显示下拉列表的视图 我的控制器正在将包含Manufacturer和ManufacturerList的ViewModel传递给View Function Search ByVal
  • 如何真正保护 PDF,最好使用 ItextPDF?

    我一直致力于在 PDF 上设置密码以防止复制 粘贴并允许打印 添加水印并设置所有者密码以防止进一步更改 一切都按预期进行 没有任何问题 然后我下载了这个免费15天的pdf删除工具 a pdf 眨眼间 无论密码有多复杂 它都会删除所有保护 尝
  • 是否可以使用属性初始化 .NET 类型?

    例如我想使用这个类Microsoft HyperV PowerShell HardDiskDrive 我尝试通过这种方式初始化它 obbb Microsoft HyperV PowerShell HardDiskDrive Path D T
  • GitHub Actions 自动批准无法处理 GitHub Actions 机器人创建的拉取请求

    我在 GitHub 存储库中使用两个工作流程 第一个工作流程由每次推送触发dev并在新分支内提升版本bump version并创建一个新的拉取请求dev name bump version on push branches dev jobs
  • 将字节数据加载到图片框

    我使用以下代码将图像保存在数据库中 ofd ShowDialog vrPicHolder IO File ReadAllBytes ofd FileName Dim drPic As DataRow drPic DsPic tblPicTe
  • Nodejs 将文本转换为 JSON

    由于某种原因 我很难将此 txt 文件转换为实际的 javascript 数组 myJson txt action key press timestamp 1523783621 user neovim action unlike times
  • 适用于任何电脑的 Visual Studio 2017 C++ Exe(链接 vcruntime140.dll)

    我对 C 的 GUI 编程非常陌生 因此我没有那么多经验 我使用 Visual Studio 2017 CRL 包为我的程序创建了一个 GUI 现在我试图让每个人都可以使用这个 exe 对于那些安装了 Visual Studio 或 VC
  • 如何在 Swift 中组合两个 NSDictionary

    我是 swift 的初学者 我正在尝试理解字典的概念 我有两个 NSDictionary 它们都包含相同的键 如下所示 var currencyname NSDictionary CNY Chinese Yuan PLN Polish Zl
  • 如何在 django 中拥有多个 AUTH_USER_MODEL

    我有两个不同的应用程序 它们具有继承自 AbstractionBaseUser 的单独模型 如下所示 in doctor models py class Patient AbstractBaseUser email models Email
  • 如何用window.scrollTo()实现平滑效果

    我可以使用以下命令滚动到 200px btn addEventListener click function window scrollTo 0 200 但我想要一个平滑的滚动效果 我该怎么做呢 2023 更新 现在您只需使用window
  • HttpServletRequest 详细信息使用 @Async Spring 返回 null

    我想提取传入请求的 URI 我的应用程序中有以下代码 a RequestMapping这是 Async 我想通过提取路径 URIrequest getRequestURI 但它返回null当 的时候 Async注释存在 否则 当注释不存在时