O Spring expõe o HttpServletRequestobjeto atual (assim como o HttpSessionobjeto atual ) por meio de um objeto wrapper do tipo ServletRequestAttributes. Este objeto wrapper está vinculado a ThreadLocal e é obtido chamando o staticmétodo RequestContextHolder.currentRequestAttributes().
ServletRequestAttributesfornece o método getRequest()para obter a solicitação atual, getSession()para obter a sessão atual e outros métodos para obter os atributos armazenados em ambos os escopos. O código a seguir, embora um pouco feio, deve fornecer o objeto de solicitação atual em qualquer lugar do aplicativo:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
Observe que o RequestContextHolder.currentRequestAttributes()método retorna uma interface e precisa ser convertido para ServletRequestAttributesque implemente a interface.
Spring Javadoc: RequestContextHolder | ServletRequestAttributes