我想提取传入请求的URI。
我在我的应用程序下面的代码 - 一个@RequestMapping
这是@Async
。我想提取经由request.getRequestURI()
路径URI但当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
的原因,我能找到的这个帖子上的答案评论:What is a life of HttpServletRequest object?
为了解决您的问题,您可以在这里尝试2点的方法:
void
可以使用,例如,incomingRequest
手动启动从CompletableFuture方法一个新的线程。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);
}