In my case, I was sending HttpServletRequest to @Async method then execute call getRequestURI() inside this method (in a different thread). This is giving me not reliable result and sometimes I got null . I modified the behavior and used a static utility method to extract requestUri (extraction in the same thread) then passing the extracted value to @Async method, I got reliable and expected result in this scenario and solved my problem.