我得到一个 LazyInitializationException 因为来自 Spring Security 的 DelegatingFilterProxy 是在 OpenEntityManagerInViewFilter 前面注册的。
我在我的 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") };
}
它可以工作,但我需要 AbstractSecurityWebApplicationInitializer 来启用 HttpSessionEventPublisher。
如何在 SpringSecurityFilterChain 前面获取 OpenEntityManagerInViewFilter?
可以在https://github.com/bugix/spring-security-testcase找到一个测试用例