Spring Security の DelegatingFilterProxy が OpenEntityManagerInViewFilter の前に登録されているため、LazyInitializationException が発生します。
AbstractSecurityWebApplicationInitializer で、次のように OpenEntityManagerInViewFilter を登録します。
@Override
protected void afterSpringSecurityFilterChain(ServletContext servletContext) {
insertFilters(servletContext, new OpenEntityManagerInViewFilter());
}
AbstractSecurityWebApplicationInitializer を使用せず、このように AbstractAnnotationConfigDispatcherServletInitializer にフィルターを登録すると
@Override
protected Filter[] getServletFilters() {
return new Filter[] { new OpenEntityManagerInViewFilter(), new DelegatingFilterProxy("springSecurityFilterChain") };
}
動作しますが、HttpSessionEventPublisher を有効にするには AbstractSecurityWebApplicationInitializer が必要です。
SpringSecurityFilterChain の前に OpenEntityManagerInViewFilter を取得するにはどうすればよいですか?
テストケースはhttps://github.com/bugix/spring-security-testcaseにあります。