Вот мой вопрос: я пишу платформу, которую я дам клиентам для реализации своих проектов. Так что в моей платформе я создал SessionService
, в котором у меня есть такие методы, как getCurrentSession
, getAttribute
, setAttribute
и т.д. Перед весенней сессии мой getCurrentMethod
выглядел следующим образом:Получить текущую сессию с весенней сессией
@Override public HttpSession getCurrentSession() { if (this.session == null) { final ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); return attr.getRequest().getSession(true); // true == allow create } return this.session; }
который работал прекрасно, хотя это выглядит уродливые и не имеют поддержки, как redis. Теперь я хочу перейти на spring-session
, и я надеялся использовать SessionRepository
, чтобы найти текущую сессию пользователя, однако я могу видеть только getSession(String id)
. Я считаю, что идентификатор хранится в файле cookie, поэтому для его использования мне, вероятно, придется передать объект HttpServletRequest
с моих контроллеров, на мои фасады, на сервисный уровень, который находится очень близко к слою db. Это выглядит очень плохой идеей для меня, поэтому мой вопрос: есть ли способ получить currentSession около уровня db? Один из способов, я думаю, - написать перехватчик, который будет вызываться контроллерами, которые будут устанавливать текущий сеанс в репозитории или услугу. Я просто не уверен, что это правильный путь.