【发布时间】:2016-12-13 02:57:10
【问题描述】:
在我的应用程序中有 2 个初始化器:一个扩展 AbstractSecurityWebApplicationInitializer,另一个扩展 AbstractAnnotationConfigDispatcherServletInitializer。当我尝试运行应用程序时,我得到了IllegalStateException: Cannot initialize context because there is already a root application context present
如果我理解正确的话,这两个初始化程序都试图创建自己的WebApplicationContext。所以我尝试覆盖createRootApplicationContext() 以强制它返回null。尽管该应用程序确实毫无例外地运行,但它运行不正确。有没有办法解决这个问题?
WebInitializer.java
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { WebConfig.class, AppConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { RepositoryConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
SecurityWebApplicationInitializer
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
public SecurityWebApplicationInitializer() {
super(SecurityConfig.class);
}
}
【问题讨论】:
-
我猜你的存储库配置 (
RepositoryConfig.class) 应该在getRootConfigClasses中,而不是在getServletConfigClasses中...你能试试吗? -
@kukkuz 不起作用,同样的异常
标签: java spring spring-mvc