使用哪一个:OpenSessionInViewInterceptor或OpenSessionInViewFilter?

lim*_*imc 5 java hibernate spring-mvc interceptor servlet-filters

我很难决定使用哪个"Open Session In View":使用Spring MVC的拦截器配置OpenSessionInViewInterceptor或在web.xml的过滤器中配置OpenSessionInViewFilter?根据我的研究,它们几乎完全相同,但我试图理解每种类型的差异和用法.

两者之间最大的区别在于那些不能在web.xml中使用过滤器的人(比如servlet 2.2及更早版本),他们唯一的选择就是使用OpenSessionInViewInterceptor.不知何故,我倾向于拦截器只是因为我必须为我的项目创建一个自定义拦截器,所以我想在Spring MVC配置文件中对所有这些"过滤器"进行分组,而不是在web.xml和我的自定义中使用OpenSessionInViewFilter Spring MVC配置文件中的拦截器.决定使用哪一个真的是一种蹩脚的方式,我的好奇心在这里杀了我.

有人可以分享你对此的看法吗?你们用哪一个?

谢谢.

ska*_*man 8

如你所说,这两者或多或少是等价的.Spring为他们提供了两者,以便您可以选择最适合您现有应用程序的那个.

如果您使用Spring MVC,那么使用拦截器是有意义的,因为它更容易配置并更好地与Spring MVC集成.

但是,如果您不使用Spring MVC,并且仅在业务逻辑级别使用Spring,那么拦截器实际上不是一个选项,并且过滤器变得更合适.因为过滤器不是由Spring管理的,所以它们很难配置为与Spring集成,但这是权衡.


Zek*_*eki 5

如果您有任何不会通过 spring 控制器的请求,即通过自定义 servlet 的遗留代码或直接命中的 jsp,那么过滤器将覆盖这些请求并确保它们被包装在会话中。拦截器不会覆盖这些请求,因为 Spring DispatcherServlet 不会接收这些请求。