O Spring expõe o HttpServletRequest
objeto atual (assim como o HttpSession
objeto atual ) por meio de um objeto wrapper do tipo ServletRequestAttributes
. Este objeto wrapper está vinculado a ThreadLocal e é obtido chamando o static
método RequestContextHolder.currentRequestAttributes()
.
ServletRequestAttributes
fornece 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 ServletRequestAttributes
que implemente a interface.
Spring Javadoc: RequestContextHolder | ServletRequestAttributes