Что использовать: OpenSessionInViewInterceptor или OpenSessionInViewFilter? - PullRequest
5 голосов
/ 21 января 2011

Мне трудно решить, какой «Открыть сеанс в представлении» использовать: настраивать OpenSessionInViewInterceptor с использованием перехватчика Spring MVC или настраивать OpenSessionInViewFilter в фильтре web.xml?Из того, что я исследовал, они делают примерно одно и то же, но я пытаюсь понять разницу и использование каждого типа.

Самое большое различие между ними для людей, которые не могут использоватьфильтр в web.xml (скажем, сервлет 2.2 и более ранних), их единственный вариант - использовать OpenSessionInViewInterceptor.Почему-то я склоняюсь к перехватчику просто потому, что мне нужно создать собственный перехватчик для своего проекта, поэтому я думаю о группировке всех этих «фильтров» в конфигурационном файле Spring MVC, а не о том, чтобы OpenSessionInViewFilter был в web.xml и в моем собственномперехватчик в конфигурационном файле Spring MVC.Это действительно плохой способ решить, какой из них использовать, и мое любопытство убивает меня здесь.

Может кто-нибудь поделиться своими мыслями об этом?Какой из них вы, ребята, используете?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 21 января 2011

Как вы говорите, эти два более или менее эквивалентны. Spring предоставляет их оба, так что вы можете выбрать тот, который лучше всего подходит для вашего существующего приложения.

Если вы используете Spring MVC, то имеет смысл использовать перехватчик, поскольку его проще настраивать и лучше интегрировать с Spring MVC.

Однако, если вы не используете Spring MVC и используете Spring только на уровне бизнес-логики, тогда перехватчик на самом деле не вариант, и фильтр становится более подходящим. Поскольку Spring не управляет фильтрами, их сложнее настроить для интеграции с Spring, но это компромисс.

4 голосов
/ 21 января 2011

Если у вас есть какие-либо запросы, которые не будут проходить через контроллер Spring, то есть унаследованный код, который проходит через пользовательский сервлет, или jsp, которые попадают напрямую, тогда фильтр покроет их и удостоверится, что они обернуты всессия.Перехватчик не будет охватывать их, поскольку эти запросы не будут получены весенним DispatcherServlet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...