Фильтр сервлета по сравнению с ServletRequestListener

Я хочу связать JPA EntityManager с текущим потоком по каждому запросу (через ThreadLocal), что могло быть сделано через ServletRequestListener или Фильтр. Слушатель выглядит более чистым, и мне не нужны дополнительные возможности фильтра в этом случае. Но возможно фильтр имеет преимущество, я отсутствовал.

Я должен использовать Фильтр Сервлета или ServletRequestListener, чтобы сделать это?

7
задан deamon 28 December 2009 в 16:34
поделиться

1 ответ

Для вашей цели нет большой разницы. Но слушатель "чище" в том смысле, что кто-то, читающий ваш код, сразу поймет, что целью этого кода не может быть перехват запроса, его изменение или другие вещи, которые может сделать фильтр.

Spring, например, использует ServletRequestListener, чтобы разрешить веб-приложениям, которые не используют фреймворк Web MVC Spring, тем не менее, получить доступ к веб-специфической функциональности, такой как бобы с обработкой сеанса. Смотрите here doc.

Edit: just to be more clear, I mentioning's RequestContextListener because it does exactly what you're talking about: create a ThreadLocal object to store a data that can be accessed across across of the rest of the request of the lifeecycle.

.
7
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: