将 Spring 配置从 XML 转换为基于 Java:无合格 bean 异常
Convert Spring configuration from XML to Java-based: No Qualifying bean Exception
我在 XML 中有一个 Spring 配置:
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="unmarshaller" />
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
<property name="connectionTimeout" value="30000" />
</bean>
</property>
</bean>
我尝试切换到基于 Java 的配置,但出现错误 "No Qualifying Bean of type WebServiceTemplate Found"。我该如何解决?
@Bean
public HttpComponentsMessageSender httpComponentsMessageSender() {
HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender();
messageSender.setConnectionTimeout(30000);
return messageSender;
}
@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplate template) {
template.setMessageSender(httpComponentsMessageSender());
return template;
}
您在 @Bean
方法中将 WebServiceTemplate
作为参数,因此 Spring 假定您已经在其他地方创建了该类型的 bean。你不这样做,Spring 尖叫着说不存在的豆子。
你需要自己实例化它,就像你做的那样HttpComponentsMessageSender
:
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate template = new WebServiceTemplate();
template.setMessageSender(httpComponentsMessageSender());
return template;
}
我在 XML 中有一个 Spring 配置:
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="unmarshaller" />
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
<property name="connectionTimeout" value="30000" />
</bean>
</property>
</bean>
我尝试切换到基于 Java 的配置,但出现错误 "No Qualifying Bean of type WebServiceTemplate Found"。我该如何解决?
@Bean
public HttpComponentsMessageSender httpComponentsMessageSender() {
HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender();
messageSender.setConnectionTimeout(30000);
return messageSender;
}
@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplate template) {
template.setMessageSender(httpComponentsMessageSender());
return template;
}
您在 @Bean
方法中将 WebServiceTemplate
作为参数,因此 Spring 假定您已经在其他地方创建了该类型的 bean。你不这样做,Spring 尖叫着说不存在的豆子。
你需要自己实例化它,就像你做的那样HttpComponentsMessageSender
:
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate template = new WebServiceTemplate();
template.setMessageSender(httpComponentsMessageSender());
return template;
}