Spring виставляє поточний HttpServletRequestоб'єкт (як і поточний HttpSessionоб'єкт) через об'єкт- обгортку типу ServletRequestAttributes. Цей об'єкт-обгортка прив'язаний до ThreadLocal і отримується шляхом виклику staticметоду RequestContextHolder.currentRequestAttributes().
ServletRequestAttributesзабезпечує метод getRequest()отримання поточного запиту, getSession()отримання поточного сеансу та інші методи отримання атрибутів, що зберігаються в обох сферах. Наступний код, хоч і трохи потворний, повинен отримати вам поточний об'єкт запиту в будь-якому місці програми:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
Зверніть увагу, що RequestContextHolder.currentRequestAttributes()метод повертає інтерфейс і його потрібно вводити до типу, ServletRequestAttributesякий реалізує інтерфейс.
Весняний Javadoc: RequestContextHolder | ServletRequestAttributes