Вы можете использовать RequestContextHolder
:
ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpSession session = requestAttributes.getRequest().getSession();
Поскольку он использует статический метод, его можно вызывать из любого места, если только он находится в том же потоке, который обработал запрос.
Редактировать: Как правильно заметил Фейсал, это, как правило, не очень хорошая идея, поскольку это приводит к нежелательному связыванию и сложному тестированию кода.Однако в некоторых случаях это неизбежно, например, когда интерфейс с вашим кодом является фиксированным (например, устаревшие сервисы или библиотека тегов JSP и т. Д.).