简体   繁体   English

将Spring配置从XML转换为基于Java的:没有合格的Bean异常

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

I have a Spring configuration in XML: 我在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>

I tried to switch to Java-based configuration, but I got the error "No Qualifying Bean of type WebServiceTemplate Found". 我尝试切换到基于Java的配置,但是出现错误“找不到类型为WebServiceTemplate的合格豆”。 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;
}

You have WebServiceTemplate as an argument in the @Bean method, so Spring assumes you have a bean of that type already created somewhere else. @Bean方法@Bean WebServiceTemplate作为参数,因此Spring假定您已经在其他地方创建了该类型的bean。 You don't, and Spring goes down screaming about non-existent beans. 您没有,Spring抱怨不存在的bean。

You need to instantiate it yourself, just like you did HttpComponentsMessageSender : 您需要自己实例化它,就像您执行HttpComponentsMessageSender

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM