簡體   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