将 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;
}