Java 将spring security从3.X升级到4.X时的循环引用

Java 将spring security从3.X升级到4.X时的循环引用,java,spring-security,upgrade,circular-reference,Java,Spring Security,Upgrade,Circular Reference,我正在将SpringSecurity从3.2.5.RELEASE升级到4.0.3.RELEASE。根据ProviderManager的属性,现在应该通过构造函数初始化它。因此,我改变了: <beans:bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager"> <beans:property name="p

我正在将SpringSecurity从3.2.5.RELEASE升级到4.0.3.RELEASE。根据ProviderManager的属性,现在应该通过构造函数初始化它。因此,我改变了:

    <beans:bean id="authenticationManager"
        class="org.springframework.security.authentication.ProviderManager">
    <beans:property name="providers">
        <beans:list>
            <beans:ref bean="daoAuthenticationProvider" />
        </beans:list>
    </beans:property>
</beans:bean>
<beans:bean id="daoAuthenticationProvider"
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    <beans:property name="userDetailsService" ref="userDetailsManager" />
...
</beans:bean>
<beans:bean id="userDetailsManager"
    class="org.springframework.security.provisioning.JdbcUserDetailsManager">
    <beans:property name="authenticationManager"
        ref="authenticationManager" />
...
</beans:bean>
有没有关于如何规避这个问题的想法

<beans:bean id="authenticationManager"
        class="org.springframework.security.authentication.ProviderManager">
    <beans:constructor-arg name="providers">
        <beans:list>
            <beans:ref bean="daoAuthenticationProvider" />
        </beans:list>
    </beans:constructor-arg>
</beans:bean>
<beans:bean id="daoAuthenticationProvider"
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
    <beans:property name="userDetailsService" ref="userDetailsManager" />
...
</beans:bean>
<beans:bean id="userDetailsManager"
    class="org.springframework.security.provisioning.JdbcUserDetailsManager">
    <beans:property name="authenticationManager"
        ref="authenticationManager" />
...
</beans:bean>
ERROR 2016-01-20 11:46:18,511 [RMI TCP Connection(4)-127.0.0.1] (?:?) - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'securityServicesDelegator' defined in class path resource [web-security-context-ui.xml]: 
Cannot resolve reference to bean 'authenticationManager' while setting bean property 'authenticationManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationManager' defined in class path resource [web-security-context-ui.xml]: 
Cannot resolve reference to bean 'daoAuthenticationProvider' while setting constructor argument with key [3]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'daoAuthenticationProvider' defined in class path resource [web-security-context-ui.xml]: 
Cannot resolve reference to bean 'userDetailsManager' while setting bean property 'userDetailsService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDetailsManager' defined in class path resource [web-security-context-ui.xml]: 
Cannot resolve reference to bean 'authenticationManager' while setting bean property 'authenticationManager'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'authenticationManager': Requested bean is currently in creation: 
Is there an unresolvable circular reference?