将配置从xml转换为Java时出错
我正在转换此基于XML的配置:将配置从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>
<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或类似的东西。