Rajkishan Swami
Rajkishan Swami

Reputation: 3769

Convert Spring configuration from XML to Java-based: No Qualifying bean Exception

I have a Spring configuration in XML:

<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>

I tried to switch to Java-based configuration, but I got the error "No Qualifying Bean of type WebServiceTemplate Found". How can I fix it?

@Bean
public HttpComponentsMessageSender httpComponentsMessageSender() {
    HttpComponentsMessageSender messageSender = new HttpComponentsMessageSender();
    messageSender.setConnectionTimeout(30000);
    return messageSender;
}

@Bean
public WebServiceTemplate webServiceTemplate(WebServiceTemplate template) {
    template.setMessageSender(httpComponentsMessageSender());
    return template;
}

Upvotes: 1

Views: 1247

Answers (1)

approxiblue
approxiblue

Reputation: 7122

You have WebServiceTemplate as an argument in the @Bean method, so Spring assumes you have a bean of that type already created somewhere else. You don't, and Spring goes down screaming about non-existent beans.

You need to instantiate it yourself, just like you did HttpComponentsMessageSender:

@Bean
public WebServiceTemplate webServiceTemplate() {
    WebServiceTemplate template = new WebServiceTemplate();
    template.setMessageSender(httpComponentsMessageSender());
    return template;
}

Upvotes: 1

Related Questions