Java 增加了Spring安全性,现在是I';“我得到了”;未找到WebApplicationContext:未注册ContextLoaderListener?“;

Java 增加了Spring安全性,现在是I';“我得到了”;未找到WebApplicationContext:未注册ContextLoaderListener?“;,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我有一个运行良好的SpringWeb应用程序。我使用的是JavaConfig,所以在整个配置中没有一点XML。我正在尝试集成Spring安全性,但当我添加一个扩展了AbstractSecurityWebApplicationInitializer的类时,我得到了以下异常: java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered? at org.

我有一个运行良好的SpringWeb应用程序。我使用的是JavaConfig,所以在整个配置中没有一点XML。我正在尝试集成Spring安全性,但当我添加一个扩展了AbstractSecurityWebApplicationInitializer的类时,我得到了以下异常:

java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:251)
...

知道如何解决这个问题吗?

您可能需要确保安全配置已加载。如果未通过其他方式加载安全配置,则AbstractSecurityWebApplicationInitializer应将安全配置传递给超级类,如下所示:


我也有同样的问题,遵循从网站的指南。 将代码添加到
MessageSecurityWebApplicationInitializer.java
解决了这个问题

public MessageSecurityWebApplicationInitializer() {
    super(SecurityConfig.class);
}
当我尝试添加super(SecurityConfig.class)时,没有找到默认构造函数,我检查了该类,发现有一个带有配置参数且没有默认值的构造函数,因此失败。3.2.6中有什么变化吗

org.springframework.beans.factory.BeanCreationException:创建名为“securityConfig”的bean时出错:bean实例化失败;嵌套异常为org.springframework.beans.beanInstationException:未能实例化[org.springframework.security.access.SecurityConfig]:未找到默认构造函数;嵌套异常是java.lang.NoSuchMethodException:org.springframework.security.access.SecurityConfig。() 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceBean(AbstractAutowireCapableBeanFactory.java:1093) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1038)
在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)

上,您是否声明了
ContextLoaderListener
?这样做了吗?但您能否解释为什么在我引用的教程(UnsecureMVC)中不需要这样做?我的应用程序在包含@ComponentScan的基本包中有一个根配置文档,我认为这应该是用来获取SecurityConfig类的。。。顺便说一句,您和您的团队在春季安全方面做得很好!我解决了我的问题。。。我的
DispatcherServletInitializer
getRootConfigClasses()
方法返回
null
,这就是它没有拾取SecurityConfig类的原因。再次感谢!很高兴你找到了答案:)谢谢你对Spring Security的反馈!我也有同样的问题。我的getRootConfigClasses()方法没有返回null,我已经像上面所说的那样将安全配置传递给了超类,但是问题仍然存在。
public MessageSecurityWebApplicationInitializer() {
    super(SecurityConfig.class);
}