Какой метод HandlerInterceptorAdapter следует реализовать и использовать для очистки ThreadLocal? - PullRequest
2 голосов
/ 01 августа 2020

Я написал реализацию HandlerInterceptorAdapter. Он помещает некоторые данные запроса c в ThreadLocal. Поскольку потоки повторно используются для новых запросов, данные, которые были помещены в ThreadLocal, должны быть удалены при обработке запроса. Какой метод HandlerInterceptorAdapter следует реализовать, чтобы очистить его? На мой взгляд, есть два варианта: postHandle и afterCompletion. Мне нужно, чтобы данные в ThreadLocal гарантированно были удалены.

1 Ответ

1 голос
/ 01 августа 2020

Используйте afterCompletion. Он будет вызываться при любом результате

Обратного вызова после завершения обработки запроса, то есть после рендеринга представления. Будет вызываться при любом результате выполнения обработчика, , таким образом, обеспечивает правильную очистку ресурсов .

Ссылка

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/HandlerInterceptor.html

Примечание

  • Если вы собираетесь вернуть false из preHandle, вы должны очистить локальный поток в предварительном дескрипторе сам, потому что false означает, что вы обработали ответ, в результате postHanlde() или afterCompletion не будут вызываться
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...