我想提取传入请求的 URI。我的应用程序中有以下代码 -@RequestMapping即@Async. 我想通过提取路径URI,request.getRequestURI()但是null当@Async注释存在时它会返回,否则,当它不存在时,输出是所需的。这是预期的行为,如果是,为什么?我怎样才能获得相同的输出@Async?删除@Async对我来说不是一个简单的选择,因为我想用它来提高性能。@Async@RequestMapping("{name}/**")@ResponseBodypublic void incomingRequest( @PathVariable("name") String name, HttpMethod method, HttpServletRequest request, HttpServletResponse response){ String URI = request.getRequestURI(); // <-- null with @Async}似乎总的来说,所有与请求相关的参数都在丢失,这不是我想要的;我需要为我的程序提取它们。
1 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
我能找到的最接近空原因的线索HttpServletRequest
是对这篇文章的答案的评论:HttpServletRequest 对象的生命是什么?
要解决您的问题,您可以在此处尝试 2 种方法:
由于您的方法是您可以使用例如CompletableFuture
void
从方法手动启动一个新线程。incomingRequest
或者,尝试
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);
}
添加回答
举报
0/150
提交
取消