Java IllegalStateException:无法初始化上下文,因为已经存在根应用程序上下文

Java IllegalStateException:无法初始化上下文,因为已经存在根应用程序上下文,java,spring,spring-mvc,Java,Spring,Spring Mvc,在我的应用程序中有两个初始值设定项:一个扩展AbstractSecurityWebApplicationInitializer,另一个扩展AbstractAnnotationConfigDispatchersServletilizer。当我试图运行应用程序时,我得到了一个anIllegalStateException:无法初始化上下文,因为已经存在根应用程序上下文 如果我理解正确,两个初始化者都试图创建自己的WebApplicationContext。因此,我尝试重写createRootAppl

在我的应用程序中有两个初始值设定项:一个扩展
AbstractSecurityWebApplicationInitializer
,另一个扩展
AbstractAnnotationConfigDispatchersServletilizer
。当我试图运行应用程序时,我得到了一个an
IllegalStateException:无法初始化上下文,因为已经存在根应用程序上下文

如果我理解正确,两个初始化者都试图创建自己的
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
中放置构造函数。构造函数将创建一个新的ContextLoaderListener。只要删除它,一切正常。

我想您的存储库配置(
RepositoryConfig.class
)应该在
getRootConfigClasses
中,而不是
getServletConfigClasses
中。。。你能试试吗?@kukkuz不起作用,同样的例外
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;


public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
    public SecurityWebApplicationInitializer() {
        super(SecurityConfig.class);
    }
}