使用哪一个:OpenSessionInViewInterceptor或OpenSessionInViewFilter?
我很难决定使用哪个“Open Session In View”:使用Spring MVC的拦截器配置OpenSessionInViewInterceptor或在web.xml的filter中配置OpenSessionInViewFilter? 根据我的研究,他们做了几乎相同的事情,但我试图了解每种类型的差异和用法。
两者之间最大的区别是那些不能在web.xml中使用filter的人(比如servlet 2.2及更早版本),他们唯一的选择就是使用OpenSessionInViewInterceptor。 不知何故,我倾向于拦截器只是因为我必须为我的项目创建一个自定义拦截器,所以我想在Spring MVC配置文件中对所有这些“filter”进行分组,而不是在web.xml和我的自定义中使用OpenSessionInViewFilter Spring MVC配置文件中的拦截器。 决定使用哪一个真是一种蹩脚的方式,我的好奇心在这里杀了我。
有人可以分享你对此的看法吗? 你们用哪一个?
谢谢。
如你所说,这两者或多或少是等价的。 Spring为他们提供了两者,以便您可以选择最适合您现有应用程序的那个。
如果您使用Spring MVC,那么使用拦截器是有意义的,因为它更容易配置并更好地与Spring MVC集成。
但是,如果您不使用Spring MVC,并且仅在业务逻辑级别使用Spring,那么拦截器实际上不是一个选项,并且filter变得更合适。 因为filter不是由Spring管理的,所以它们很难配置为与Spring集成,但这是权衡。
如果您有任何不通过spring控制器的请求,即通过自定义servlet的遗留代码,或直接命中的jsp,那么filter将覆盖那些并确保它们包含在会话中。 拦截器不会覆盖那些拦截器,因为Spring DispatcherServlet不会获取这些请求。
- 收到org.hibernate.TypeMismatchExceptionexception
- Weblogic 12hibernatevalidationexception
- Hibernate / MySQL连接超时
- java.lang.IllegalStateException:具有@ManyToMany 3实体的同一实体的多个表示forms
- 如何将用户创建的连接传递给hibernate
- 如果存在,则关闭打开的hibernate会话
- 没有可用于当前线程的实际事务的EntityManager – 无法可靠地处理“刷新”调用
- 加入fetch:“查询指定的连接提取,但获取的关联的所有者在选择列表中不存在”
- Hibernateexception处理