【问题标题】:spring-boot-security 注释我的@Configuration 的SecurityConfig 给出了这个错误
【发布时间】:2014-05-29 10:03:27
【问题描述】:

我点击了这个链接 spring-security 教程http://spring.io/guides/gs/securing-web/

我的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-securing-web</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.0.1.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
                <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring4</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <start-class>demo.Application</start-class>
    </properties>

    <build>
        <plugins>
            <plugin> 
                <artifactId>maven-compiler-plugin</artifactId> 
                <version>2.3.2</version> 
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>http://repo.spring.io/libs-snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>http://repo.spring.io/libs-snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

运行我的应用程序时出现此错误:

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]] 在 java.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.util.concurrent.FutureTask.get(FutureTask.java:188) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744) 原因:org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ...省略了6个常用框架 原因:org.springframework.beans.factory.BeanCreationException:在类路径资源[org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]中定义名称为“springSecurityFilterChain”的bean创建错误:bean实例化失败;嵌套异常是 org.springframework.beans.factory.BeanDefinitionStoreException:工厂方法 [public javax.servlet.Filter org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain() throws java.lang.Exception] 抛出异常;嵌套异常是 java.lang.IllegalStateException:org.springframework.security.config.annotation.ObjectPostProcessor 是必需的 bean。确保您已使用 @EnableWebSecurity 和 @Configuration 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:597) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1094) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:989) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getOrderedBeansOfType(EmbeddedWebApplicationContext.java:367) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getServletContextInitializerBeans(EmbeddedWebApplicationContext.java:268) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext$1.onStartup(EmbeddedWebApplicationContext.java:213) 在 org.springframework.boot.context.embedded.tomcat.ServletContextInitializerLifecycleListener.lifecycleEvent(ServletContextInitializerLifecycleListener.java:54) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ...省略了6个常用框架 引起:org.springframework.beans.factory.BeanDefinitionStoreException:工厂方法[public javax.servlet.Filter org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain() throws java.lang.Exception]抛出异常;嵌套异常是 java.lang.IllegalStateException:org.springframework.security.config.annotation.ObjectPostProcessor 是必需的 bean。确保您已使用 @EnableWebSecurity 和 @Configuration 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188) 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:586) ...省略了22个常用框架 引起:java.lang.IllegalStateException:org.springframework.security.config.annotation.ObjectPostProcessor 是必需的 bean。确保您已使用 @EnableWebSecurity 和 @Configuration 在 org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter$1.postProcess(WebSecurityConfigurerAdapter.java:71) 在 org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.getHttp(WebSecurityConfigurerAdapter.java:168) 在 org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.init(WebSecurityConfigurerAdapter.java:276) 在 demo.SecurityConfig.init(SecurityConfig.java) 在 org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.init(WebSecurityConfigurerAdapter.java:61) 在 demo.SecurityConfig.init(SecurityConfig.java) 在 demo.SecurityConfig$$EnhancerBySpringCGLIB$$ad0def71.init() 在 org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder.init(AbstractConfiguredSecurityBuilder.java:369) 在 org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder.doBuild(AbstractConfiguredSecurityBuilder.java:322) 在 org.springframework.security.config.annotation.AbstractSecurityBuilder.build(AbstractSecurityBuilder.java:39) 在 org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain(WebSecurityConfiguration.java:92) 在 org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$8369fa72.CGLIB$springSecurityFilterChain$3() 在 org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$8369fa72$$FastClassBySpringCGLIB$$714024ff.invoke() 在 org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 在 org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312) 在 org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$$EnhancerBySpringCGLIB$$8369fa72.springSecurityFilterChain() 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1254) 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166) ...省略了23个常用框架 2014-04-15 15:18:12.693 错误 11170 --- [main] org.apache.catalina.core.ContainerBase:子容器在启动过程中失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Tomcat].StandardHost[localhost]] 在 java.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.util.concurrent.FutureTask.get(FutureTask.java:188) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.startup.Tomcat.start(Tomcat.java:341) 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:79) 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.(TomcatEmbeddedServletContainer.java:69) 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:270) 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:145) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:159) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:132) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:120) 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:648) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:311) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:909) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:898) 在 demo.Application.main(Application.java:14) 原因:org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Tomcat].StandardHost[localhost]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744) 原因:org.apache.catalina.LifecycleException:子容器在启动期间失败 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ...省略了6个常用框架 2014-04-15 15:18:12.708 INFO 11170 --- [main] .blClasspathLoggingApplicationListener:应用程序无法使用类路径启动:[file:/home/isahac/STS/workspace/sample/target/classes/,文件: /root/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.0.1.RELEASE/spring-boot-starter-web-1.0.1.RELEASE.jar,文件:/root/。 m2/repository/org/springframework/boot/spring-boot-starter/1.0.1.RELEASE/spring-boot-starter-1.0.1.RELEASE.jar,文件:/root/.m2/repository/org/springframework/ boot/spring-boot/1.0.1.RELEASE/spring-boot-1.0.1.RELEASE.jar,文件:/root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.0.1。 RELEASE/spring-boot-autoconfigure-1.0.1.RELEASE.jar,文件:/root/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.0.1.RELEASE/spring-boot- starter-logging-1.0.1.RELEASE.jar,文件:/root/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.6/jcl-over-slf4j-1.7.6.jar,文件: /root/.m2/repository/org/slf4j/jul-to-slf4j/1.7.6/jul-to-slf4j-1.7.6.j ar,文件:/root/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.6/log4j-over-slf4j-1.7.6.jar,文件:/root/.m2/repository/ch/ qos/logback/logback-classic/1.1.2/logback-classic-1.1.2.jar,文件:/root/.m2/repository/ch/qos/logback/logback-core/1.1.2/logback-core- 1.1.2.jar,文件:/root/.m2/repository/org/yaml/snakeyaml/1.13/snakeyaml-1.13.jar,文件:/root/.m2/repository/org/springframework/boot/spring-boot- starter-tomcat/1.0.1.RELEASE/spring-boot-starter-tomcat-1.0.1.RELEASE.jar,文件:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/ 7.0.52/tomcat-embed-core-7.0.52.jar,文件:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/7.0.52/tomcat-embed-el- 7.0.52.jar,文件:/root/.m2/repository/org/apache/tomcat/embed/tomcat-embed-logging-juli/7.0.52/tomcat-embed-logging-juli-7.0.52.jar,文件:/root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.3.2/jackson-databind-2.3.2.jar,文件:/root/.m2/repository/com/fasterxml/杰克逊/核心/杰克逊注释/2.3.0/杰克逊注释ns-2.3.0.jar,文件:/root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.3.2/jackson-core-2.3.2.jar,文件:/root/。 m2/repository/org/springframework/spring-web/4.0.3.RELEASE/spring-web-4.0.3.RELEASE.jar,文件:/root/.m2/repository/org/springframework/spring-webmvc/4.0。 3.RELEASE/spring-webmvc-4.0.3.RELEASE.jar,文件:/root/.m2/repository/org/springframework/boot/spring-boot-starter-security/1.0.1.RELEASE/spring-boot- starter-security-1.0.1.RELEASE.jar,文件:/root/.m2/repository/org/springframework/security/spring-security-config/3.2.3.RELEASE/spring-security-config-3.2.3。 RELEASE.jar,文件:/root/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar,文件:/root/.m2/repository/org/springframework/security/spring-security-core/3.2。 3.RELEASE/spring-security-core-3.2.3.RELEASE.jar,文件:/root/.m2/repository/org/springframework/security/spring-security-web/3.2.3.RELEASE/spring-security- web-3.2.3.RELEASE.jar,文件:/root/.m2/repository/org/springframework/spring-aop/4.0.3.RELEASE/sp ring-aop-4.0.3.RELEASE.jar,文件:/root/.m2/repository/org/springframework/spring-beans/4.0.3.RELEASE/spring-beans-4.0.3.RELEASE.jar,文件: /root/.m2/repository/org/springframework/spring-context/4.0.3.RELEASE/spring-context-4.0.3.RELEASE.jar,文件:/root/.m2/repository/org/springframework/spring-核心/4.0.3.RELEASE/spring-core-4.0.3.RELEASE.jar,文件:/root/.m2/repository/org/springframework/spring-expression/4.0.3.RELEASE/spring-expression-4.0。 3.RELEASE.jar,文件:/root/.m2/repository/org/thymeleaf/thymeleaf-spring4/2.1.2.RELEASE/thymeleaf-spring4-2.1.2.RELEASE.jar,文件:/root/.m2/存储库/org/thymeleaf/thymeleaf/2.1.2.RELEASE/thymeleaf-2.1.2.RELEASE.jar,文件:/root/.m2/repository/ognl/ognl/3.0.6/ognl-3.0.6.jar,文件:/root/.m2/repository/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar,文件:/root/.m2/repository/org/slf4j/slf4j-api/ 1.7.6/slf4j-api-1.7.6.jar,文件:/home/isahac/STS/lib/springloaded-1.1.5.RELEASE.jar] 线程“主”org.springframework.context.ApplicationContextException 中的异常:无法启动嵌入式容器;嵌套异常是 org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:135) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:476) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:120) 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:648) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:311) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:909) 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:898) 在 demo.Application.main(Application.java:14) 引起:org.springframework.boot.context.embedded.EmbeddedServletContainerException:无法启动嵌入式Tomcat 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:106) 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.(TomcatEmbeddedServletContainer.java:69) 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:270) 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:145) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:159) 在 org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:132) ... 7 更多 原因:org.apache.catalina.LifecycleException:无法启动组件 [StandardServer[-1]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 在 org.apache.catalina.startup.Tomcat.start(Tomcat.java:341) 在 org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:79) ... 12 更多 原因:org.apache.catalina.LifecycleException:无法启动组件 [StandardService[Tomcat]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 14 更多 原因:org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Tomcat]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 16 更多 原因:org.apache.catalina.LifecycleException:子容器在启动期间失败 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 18 更多

谢谢

【问题讨论】:

  • 无论如何你都应该显示你的配置。 StackTrace 说:确保您使用了@EnableWebSecurity 和@Configurationdemo.Application 和其他配置类。
  • GS 指南开箱即用。你一定在做一些不同的事情。在github上分享项目怎么样?

标签: java spring spring-mvc spring-security spring-boot


【解决方案1】:

将此依赖项添加到您的 pom.xm

<dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
</dependency>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 2022-11-26
    • 2014-01-16
    • 1970-01-01
    • 2017-08-17
    • 2016-12-22
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多