使用Spring RequestContextListener

时间:2018-07-26 09:28:43

标签: java spring-mvc spring-security

如果我使用

@Autowired HttpServletRequest httpServletRequest;

我得到一个错误:

  

未找到线程绑定的请求:您是否在引用请求属性   在实际的Web请求之外,或在外部处理请求   最初的接收线程?如果您实际在   一个网络请求,但仍然收到此消息,您的代码可能是   在DispatcherServlet / DispatcherPortlet外部运行:在这种情况下,   使用RequestContextListener或RequestContextFilter公开   当前请求。

然后在谷歌搜索中,我被要求使用:

<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

我能够从请求中获取IP地址。我的查询是,如果在多个并行请求中使用Async方法中的IP地址,该IP地址是否正确?

这是一个Spring MVC应用程序。是否有更好的方法来获取IP地址。我想在自定义提供程序中记录IP地址。

1 个答案:

答案 0 :(得分:0)

我认为您使用错误的方式。 您可以在控制器方法调用中获得HttpServletRequest

@RestController
public class SomeController {

   @RequestMapping(path = "/dosmtng")
   public void doSomething(HttpServletRequest request, <other params>){
      ....
   }

}

例如,像这样。 因此,您可以在此处从请求中获取必要的属性,然后将其放入其他方法中。