将配置从xml转换为Java时出错

将配置从xml转换为Java时出错,java,xml,spring,Java,Xml,Spring,我正在转换此基于XML的配置: <bean id="artifactBinding" class="org.springframework.security.saml.processor.HTTPArtifactBinding"> <constructor-arg ref="parserPool" /> <constructor-arg ref="velocityEngine" /> <constructor-arg>

我正在转换此基于XML的配置:

<bean id="artifactBinding"
    class="org.springframework.security.saml.processor.HTTPArtifactBinding">
    <constructor-arg ref="parserPool" />
    <constructor-arg ref="velocityEngine" />
    <constructor-arg>
        <bean
            class="org.springframework.security.saml.websso.ArtifactResolutionProfileImpl">
            <constructor-arg>
                <bean class="org.apache.commons.httpclient.HttpClient">
                    <constructor-arg>
                        <bean
                            class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager" />
                    </constructor-arg>
                </bean>
            </constructor-arg>
            <property name="processor">
                <bean
                    class="org.springframework.security.saml.processor.SAMLProcessorImpl">
                    <constructor-arg ref="soapBinding" />
                </bean>
            </property>
        </bean>
    </constructor-arg>
</bean>

在javadoc中

    @Bean
    @Qualifier("postBinding")
    public HTTPPostBinding postBinding() {
        return new HTTPPostBinding(parserPool(), velocityEngine());
    }

    @Bean
    @Qualifier("redirectBinding")
    public HTTPRedirectDeflateBinding redirectBinding() {
        return new HTTPRedirectDeflateBinding(parserPool());
    }

    @Bean
    @Qualifier("paosBinding")
    public HTTPPAOS11Binding paosBinding() {
        return new HTTPPAOS11Binding(parserPool());
    }

    @Bean
    @Qualifier("soapBinding")
    public HTTPSOAP11Binding soapBinding() {
        return new HTTPSOAP11Binding(parserPool());
    }

    @Bean
    public org.apache.commons.httpclient.MultiThreadedHttpConnectionManager multiThreadedHttpConnectionManager() {
        return new org.apache.commons.httpclient.MultiThreadedHttpConnectionManager();
    }

    @Bean
    public org.apache.commons.httpclient.HttpClient httpClient() {
        return new org.apache.commons.httpclient.HttpClient(multiThreadedHttpConnectionManager());
    }

    @Bean
    ArtifactResolutionProfileImpl artifactResolution() {
        ArtifactResolutionProfileImpl artifactResolution = new ArtifactResolutionProfileImpl(httpClient());
        artifactResolution.setProcessor(sAMLProcessorImpl());
        return artifactResolution;
    }

    @Bean
    @Qualifier("artifactResolution")
    public org.springframework.security.saml.processor.HTTPArtifactBinding artifactBinding() {
        return new HTTPArtifactBinding(parserPool(), velocityEngine(),
                artifactResolution());
    }

    @Bean
    @Qualifier("processor")
    public SAMLProcessorImpl processor() {
        Collection<SAMLBinding> bindings = new ArrayList<SAMLBinding>();
        bindings.add(redirectBinding());
        bindings.add(postBinding());
        bindings.add(soapBinding());
        bindings.add(paosBinding());
        bindings.add(artifactBinding());
        return new SAMLProcessorImpl(bindings);
    }

    @Bean
    @Qualifier("sAMLProcessorImpl")
    public SAMLProcessorImpl sAMLProcessorImpl() {
        return new SAMLProcessorImpl(soapBinding());
    }
@Bean
@限定符(“后绑定”)
公共HTTPPostBinding postBinding(){
返回新的HTTPPostBinding(parserPool(),velocityEngine());
}
@豆子
@限定符(“重定向绑定”)
公共HTTPRedirectDeflateBinding重定向绑定(){
返回新的HTTPRedirectDeflateBinding(parserPool());
}
@豆子
@限定词(“paosbind”)
公共HttpPaoS11绑定paosBinding(){
返回新的httppaos11绑定(parserPool());
}
@豆子
@限定符(“soapBinding”)
公共HTTPSOAP11Binding soapBinding(){
返回新的HTTPSOAP11Binding(parserPool());
}
@豆子
public org.apache.commons.httpclient.multi-threadedhttpconnectionmanager multi-threadedhttpconnectionmanager(){
返回新的org.apache.commons.httpclient.MultiThreadedHttpConnectionManager();
}
@豆子
public org.apache.commons.httpclient.httpclient httpclient(){
返回新的org.apache.commons.httpclient.httpclient(多线程httpconnectionmanager());
}
@豆子
ArtifactResolutionProfileImpl artifactResolution(){
ArtifactResolutionProfileImpl artifactResolution=新的ArtifactResolutionProfileImpl(httpClient());
setProcessor(sAMLProcessorImpl());
返回伪影分辨率;
}
@豆子
@限定词(“工件解析”)
public org.springframework.security.saml.processor.HTTPArtifactBinding artifactBinding(){
返回新的HTTPArtifactBinding(parserPool(),velocityEngine(),
伪影分辨率();
}
@豆子
@限定符(“处理器”)
公共SamlProcessor MPL processor(){
集合绑定=新的ArrayList();
添加(重定向绑定());
添加(postBinding());
添加(soapBinding());
添加(paosBinding());
添加(artifactBinding());
返回新的SAMLProcessorImpl(绑定);
}
@豆子
@限定符(“sAMLProcessorImpl”)
公共SAMLProcessorImpl SAMLProcessorImpl(){
返回新的SAMLProcessorImpl(soapBinding());
}
。。。但在运行时,Spring会返回以下错误:


“artifactBinding”bean有什么问题吗?

它不是同一个配置
SAMLProcessorImpl
在java配置版本中有更多的过程,这可能涉及一个循环或其他什么。顺便说一句,
@Qualifier
在这里是错误的,方法的名称被用作bean名称,如果您想更改它,您必须在
@bean
注释上使用一个属性,不是
@限定符
parserPool
有一个循环依赖项,但我没有所有的代码,所以我不知道。你只需要在依赖注入中有一个循环,a需要B,B需要C,C需要a或类似的东西。