繁体   English   中英

添加豆后出现错误

[英]Error after adding beans

我在应用程序的XML文件中添加了3个bean

<bean id="rememberMeServices"
    class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">
    <property name="userDetailsService" ref="myUserDetailsService" />
    <property name="key" value="springRocks" />
</bean>

<bean id="rememberMeAuthenticationProvider"
    class="org.springframework.security.authentication.rememberme.RememberMeAuthenticationProvider">
    <property name="key" value="springRocks" />
</bean>

此外,我还向POM文件添加了spring-security-web,spring-security-core,spring-security-config和spring-context依赖项。

但是,我仍然收到以下错误消息:org.springframework.beans.factory.BeanCreationException:创建类路径资源[META-INF / App-setup / applicationcontext-security.xml]中定义的名称为'rememberMeFilter'的bean时出错:实例化bean失败; 嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter]:未找到默认构造函数; 嵌套异常是java.lang.NoSuchMethodException:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1101)处的org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter。() org.springframework.beans.factors.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)上的.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046)在org.springframework.beans.factors.support.AbstractAutowireCapableBean org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:303)的org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java)的.createBean(AbstractAutowireCapableBeanFactory.java:476) 230)在org.springframework.beans.factory.support.AbstractBeanFac org.springframework.beans.factory.support上的tory.doGetBean(AbstractBeanFactory.java:299).org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:上的AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 755)在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)在org.springframework.web.context.ContextLoader org上的org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)的org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)的.configureAndRefreshWebApplicationContext(ContextLoader.java:403) org.eclipse.jetty.servlet.ServletContextHandler.c上的eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:800) org.org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791)处的allContextInitialized(ServletContextHandler.java:444)org.org处的org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294)位于org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp(JettyWebAppContext.java:296)的.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1349)位于org.eclipse.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1342)在org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)在org.eclipse.jetapp.Webapp.WebAppContext.doStart(WebAppContext.java:505)在org。 org.eclipse.jetty.util.component.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:365)org.eclipse.jetty.util.component处的AbstractLifeCycle.start(AbstractLifeCycle.java:68)。 org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.j)上的ContainerLifeCycle.start(ContainerLifeCycle.java:132) ava:114)在org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)在org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:163)在org.eclipse org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)上的.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)在org.eclipse.jetty.util.component.ContainerLifeCycle上在org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)处的.doStart(ContainerLifeCycle.java:114)在org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68处) ),位于org.eclipse.jetty.util的org.eclipse.jetty.server.Server.Server.start(Server.java:387)的org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)。在org.eclipse.jetty.server.handler.AbstractHandler.AbstractHandler.doStart(ContainerLifeCycle.java:114)上的org.eclipse.jetty.server.Server.d处的component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) org.eclipse.jetty.maven.plugin.JettyServer.doStart(JettyServer.java:73)的oStart(Server.java:354)org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)的oStart(Server.java:354)在org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:534)在org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:357)在org.eclipse.jetty.maven org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)上的.plugin.JettyRunMojo.execute(JettyRunMojo.java:167)在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java :208),位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153),位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)。位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.j的maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) ava:80)在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)在org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) )在org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)在org.apache.maven.cli.MavenCli。 main(MavenCli.java:197)位于sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)位于sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)在java.lang.reflect.Method.invoke(Method.java:498)在org.codehaus.plexus.classworlds.l org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)上的auncher.Launcher.launch(Launcher.java:229)在org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher。 java:356)由以下原因引起:org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter]:未找到默认构造函数; 嵌套的异常是java.lang.NoSuchMethodException:org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:85)上的org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter。() .beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1094)... 65更多原因:java.lang.NoSuchMethodException:org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter。()在Java。 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80)上的java.lang.Class.getDeclaredConstructor(Class.java:2178)上的lang.Class.getConstructor0(Class.java:3082).. 。66更多

我是否缺少任何依赖关系?

RememberMeAuthenticatioinProvider的正确类路径为:

org.springframework.security.authentication.RememberMeAuthenticationProvider

我认为您的文件中有错字。

您的其他Bean参考也应更新

编辑

看来您正在使用的RememberMeAuthenticationProvider版本比您的文档要新。

RememberMeAuthenticationProvider的默认构造函数不再是公共的。 这是剩下的唯一构造函数:

RememberMeAuthenticationFilter(AuthenticationManager authenticationManager, RememberMeServices rememberMeServices) 

因此,您必须提供构造函数参数:

<bean id="rememberMeAuthenticationProvider"
    class="org.springframework.security.authentication.rememberme.RememberMeAuthenticationProvider">
    <constructor-arg ref="yourAuthManager"/>
    <constructor-arg ref="rememberMeServices"/>
    <property name="key" value="springRocks" />
</bean>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM