Вот мой вопрос: я пишу платформу, которую буду давать клиентам для реализации своих проектов. Итак, на моей платформе я создал 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
из моих контроллеров на мои фасады на уровень обслуживания, который находится очень близко к уровню базы данных. Мне это кажется очень плохой идеей, поэтому мой вопрос будет таким: есть ли способ получить currentSession рядом с уровнем db? Я думаю, что один из способов — написать перехватчик, который будет вызывать контроллеры, которые будут устанавливать текущий сеанс в репозитории или, может быть, службу? Я просто не уверен, что это правильный путь.