2012-04-20 5 views
0

이상한 질문이 있습니다.AOP jsp 렌더링 후의 포인트 컷

서버 상호 작용이 끝날 때 코드를 실제로 실행해야합니다. 그래서, 내가 jsp를 사용한다면, 나는 페이지의 렌더링 후에 그것을 실행할 필요가있다.

실행 방법이 있습니까?

내가이 포인트 컷

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

후 시도했지만 그냥 "의 ModelAndView를 반환"다음 날 떠나. 서버 세션이 끝나야합니다.

나는 내가 JSP 뷰를 렌더링 한 후에 인해 세션의 폐쇄에 게으른 초기화 예외를 피하고, 하이버 네이트 세션을 닫아야합니다 때문에하고 싶은, 그리고 난 스크립트

같이하자 피하려고 HandlerIntercepetorafterCompletion(..) 방법을 구현 -
<% HibernateManager.getSession().close() %> 

효과적으로 당신은 스프링 MVC 인터셉터를 가질 수있는 모델

답변

2

와보기를 결합. 또한 필터에서 할 수 있습니다.

하지만 당신은 두 가지 이유로, 두가 없습니다 : 당신이보기에 초기화되지 않은 컬렉션을 통과하지 않아야

  • . 서비스 계층에서 필요한 모든 것을 초기화하면 LazyInitializationException이 발생하지 않습니다. 사실,
  • avoid lazy collections 당신이 서비스를 초기화하는 게으른 컬렉션을 가지고, 그리고하기로 결정하는 경우에도 정확하게 당신이 필요로 할 그 봄은 당신에게 OpenEntityManagerInViewInterceptor (및 Filter)을 제공하고, 또한 OpenSessionInViewInterceptor (그리고 Filter).
+0

감사합니다. 그러나, 나는 게으름 대신에 관계를 열망하는 것이 더 많은 이점이 있기 때문에 나는 "게으름"을 제거하는 것을 선호하지 않습니다. (물론 코드를 더 신중하게 작성해야합니다!) – Gtazok

관련 문제