Spring ujawnia bieżący HttpServletRequestobiekt (jak również bieżący HttpSessionobiekt) przez obiekt opakowujący typu ServletRequestAttributes. Ten obiekt otoki jest powiązany z ThreadLocal i jest uzyskiwany przez wywołanie staticmetodyRequestContextHolder.currentRequestAttributes() .
ServletRequestAttributeszapewnia metodę getRequest()pobierania bieżącego żądania, getSession()pobierania bieżącej sesji i innych metod pobierania atrybutów przechowywanych w obu zakresach. Poniższy kod, choć nieco brzydki, powinien dostarczyć aktualny obiekt żądania w dowolnym miejscu aplikacji:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
Zwróć uwagę, że RequestContextHolder.currentRequestAttributes()metoda zwraca interfejs i musi zostać zeskanowana do ServletRequestAttributestego, który implementuje interfejs.
Spring Javadoc: RequestContextHolder | ServletRequestAttributes