jsp渲染后的AOP切入点

时间:2012-04-20 15:03:55

标签: java spring hibernate jsp aop

我有一个奇怪的问题。

我需要在服务器交互结束时真正执行代码。所以,如果我使用jsp,我需要在渲染页面后执行它。

有办法执行吗?

我在这个切入点后尝试了

@Pointcut("@annotation(org.springframework.web.bin d.annotation.RequestMapping)")

但它在“返回ModelAndView”之后就离开了我。我需要完成服务器会话的结束。

我想这样做是因为我需要关闭Hibernate会话,避免由于jsp渲染视图后关闭会话而导致的延迟初始化异常,我想避免脚本让我们喜欢

<% HibernateManager.getSession().close() %> 

有效地将视图与模型耦合

1 个答案:

答案 0 :(得分:2)

你可以使用spring-mvc拦截器 - 实现HandlerIntercepetor的{​​{1}}方法。您也可以在过滤器中执行此操作。

但是你没有两个,原因有两个:

  • 您不应将未初始化的集合传递给您的视图。初始化服务层中所需的所有内容,然后就不会有LazyInitializationException。实际上,avoid lazy collections
  • 即使你决定使用懒惰的集合,也不要在服务中初始化它们,spring会给你afterCompletion(..)(和OpenEntityManagerInViewInterceptor),还有Filter(和{{1完全符合你的需要。