无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)

Raj*_*ava 5 xml spring spring-security

我在将Spring安全性版本3迁移到4时遇到此异常.我正在使用基于Sprig 4 XML的安全性来实现它.你会非常感激

例外:

引起:org.springframework.beans.factory.BeanCreationException:创建名为'util:list#f1d6071'的bean时出错:无法创建类型为[org.springframework.security.web]的内核'security:filter-chain#1c5c0deb'.使用key [10]设置bean属性'sourceList'时的DefaultSecurityFilterChain]; 嵌套异常是org.springframework.beans.factory.Bea nCreationException:创建名为'security:filter-chain#1c5c0deb'的bean时出错:C当使用key [5]设置co nstructor参数时,annot解析对bean'adminConsoleDeniedExceptionTranslationFilter'的引用; 嵌套的例外是org.springframework.beans.factory.BeanCreationException:错误名称ServletContext的资源定义的"adminConsoleDeniedExceptionTranslationF ILTER"创建豆[/WEB-INF/spring-security.xml]:无法解析匹配的构造函数(提示:指定索引/类型/名称参数,用于简单参数到void类型歧义)

org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:282)org.springframework.beans.factory.support中的[spring-beans-4.0.2.RELEASE.jar:4.0.2.RELEASE] .BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:121)[spring-beans-4.0.2.RELEASE.jar:4.0.2.RELEAS E]

spring-security.xml(受影响的Spring 4 XML配置的一小部分)

<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
  <constructor-arg>
      <util:list>
          <security:filter-chain pattern="/refreshCache**" filters="scpf,noFilter,logoutFilter"/>
          <security:filter-chain pattern="/admin/adminConsole/**" filters="scpf,dsToSpringFilter,securityFilter,logoutFilter,
            fsi,adminConsoleDeniedExceptionTranslationFilter,adminConsoleFilter"/>
      </util:list>
  </constructor-arg>
</bean><bean id="etf"
    class="org.springframework.security.web.access.ExceptionTranslationFilter">
    <constructor-arg name="authenticationEntryPoint" ref="preAuthenticatedProcessingFilterEntryPoint"/>
</bean><bean id="adminConsoleDeniedExceptionTranslationFilter" class="org.springframework.security.web.access.ExceptionTranslationFilter">
       <constructor-arg name="authenticationEntryPoint2" ref="preAuthenticatedProcessingFilterEntryPoint"/>
       <constructor-arg ref="adminConsoleAccessDeniedHandler"/></bean><bean id="preAuthenticatedProcessingFilterEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/><bean id="adminConsoleAccessDeniedHandler" class="org.springframework.security.web.access.AccessDeniedHandlerImpl"><property name="errorPage" value="/WEB-INF/jsp/adminConsoleAccessDenied.jsp"/></bean>   
Run Code Online (Sandbox Code Playgroud)

Eug*_*ene 1

(bean 的)第一个构造函数参数中的 Name 属性adminConsoleDeniedExceptionTranslationFilter具有奇怪的值authenticationEntryPoint2

<bean id="adminConsoleDeniedExceptionTranslationFilter" class="org.springframework.security.web.access.ExceptionTranslationFilter">
    <constructor-arg name="authenticationEntryPoint2" ref="preAuthenticatedProcessingFilterEntryPoint"/>
    <constructor-arg ref="adminConsoleAccessDeniedHandler"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

应该是authenticationEntryPoint根据文档

另外,第二个构造函数参数没有name属性。考虑添加name属性或删除两者。