У меня есть объект, который представляет состояние пользователя с огромным количеством данных, и этот объект можно изменять несколько раз за один http-запрос, поэтому я хочу использовать одну из оптимизаций - сохранить этот объект только при уничтожении http-запроса.
Проблема в том, что когда я пытаюсь использовать аннотацию @PreDestroy для компонента области запроса, я не могу использовать зависимости области запроса, такие как HTTP-сеанс (например, вызов javax.servlet.http.HttpServletRequest#getSession()
), поскольку DispatcherServlet сбрасывает все компоненты области запроса в org.springframework.web.servlet.FrameworkServlet#processRequest
resetContextHolders(request, previousLocaleContext, previousAttributes);
if (requestAttributes != null) {
requestAttributes.requestCompleted();
}
Метод, аннотированный PreDestroy, обычно используется для освобождения ресурсов, которые он удерживал, однако я хочу зафиксировать транзакцию, используя множество зависимостей, поэтому он не работает.
ЕстьЕсть ли какой-нибудь способ весной Web для вызова метода bean-компонента после вызова Servlet :: doService и перед сбросом bean-компонентов области запроса?