【发布时间】:2019-07-05 04:58:39
【问题描述】:
我想提取传入请求的 URI。
我的应用程序中有以下代码 - @RequestMapping,即 @Async。我想通过request.getRequestURI() 提取路径URI,但是当@Async 注释存在时它返回null,否则,当它不存在时,输出是所期望的。这是预期的行为,如果是,为什么?以及如何使用@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
}
似乎总的来说,所有与请求相关的参数都在丢失,这不是我想要的;我需要为我的程序提取它们。
【问题讨论】:
-
我在本地尝试过,因为它对我有用,所以我不确定你还有什么会导致 null。但是,我建议您创建一个服务类来获取您的请求数据并对其进行处理。您可以使用 @Async 而不是 Controller 来标记服务方法,并从您的控制器调用服务。
标签: java spring spring-boot tomcat servlets