Spring expone el HttpServletRequestobjeto actual (así como el HttpSessionobjeto actual ) a través de un objeto contenedor de tipo ServletRequestAttributes. Este objeto contenedor está vinculado a ThreadLocal y se obtiene llamando al staticmétodo RequestContextHolder.currentRequestAttributes().
ServletRequestAttributesproporciona el método getRequest()para obtener la solicitud actual, getSession()para obtener la sesión actual y otros métodos para obtener los atributos almacenados en ambos ámbitos. El siguiente código, aunque un poco feo, debería llevarle el objeto de solicitud actual en cualquier lugar de la aplicación:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
Tenga en cuenta que el RequestContextHolder.currentRequestAttributes()método devuelve una interfaz y es necesario convertirlo en el ServletRequestAttributesque implementa la interfaz.
Spring Javadoc: RequestContextHolder | ServletRequestAttributes