![](/img/trans.png)
[英][ERROR]org.springframework.beans.factory.BeanCreationException
[英]Error with org.springframework.beans.factory.BeanCreationException
我想在Spring REST項目中調用兩個SOAP Web服務並獲取數據。
我有兩個用於不同的兩個(SOAP)Web服務的WSDL(VoucherService.wsdl和CGWebService.wsdl)文件。
首先,我將一個WSDL(VoucherService.wsdl)添加到項目中,並使用“ gradle wsdl2java”命令生成類。
然后使用以下Bean更新了ModuleConfig類。
@Bean
public Jaxb2Marshaller getVoucherServiceMarshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath(environment.getProperty("voucher.service.marshaller.contextPath"));
rpr歸編組; }
@Bean
public WebServiceTemplate getVoucherServiceTemplate() {
WebServiceTemplate template = new WebServiceTemplate(getVoucherServiceMarshaller());
template.setDefaultUri(environment.getProperty("voucher.service.defaultUri"));
return template;
}
@Bean
public VoucherServiceProxy getVoucherServiceProxy() {
VoucherServiceProxy voucherServiceProxy = new VoucherServiceProxy();
return voucherServiceProxy;
}
然后創建VoucherServiceProxy類並添加這些自動裝配。
@Autowired
private WebServiceTemplate voucherServiceTemplate;
@Autowired
private Jaxb2Marshaller marshaller;
然后在VoucherServiceProxy類內部創建所需的方法並進行部署, 它可以正常工作 。
之后,我使用“ gradle wsdl2java”命令為第二個WSDL(CGWebService.wsdl)生成了類。
然后在ModuleConfig類中創建以下Bean。
@Bean
public ChargingGatewayServiceProxy getChargingGatewayServiceProxy() {
ChargingGatewayServiceProxy chargingGatewayServiceProxy = new ChargingGatewayServiceProxy();
return chargingGatewayServiceProxy;
}
@Bean
public Jaxb2Marshaller getChargingGatewayServiceMarshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath(environment.getProperty("cg.service.marshaller.contextPath1"));
return marshaller;
}
@Bean
public WebServiceTemplate getChargingGatewayServiceTemplate() {
WebServiceTemplate template = new WebServiceTemplate(getChargingGatewayServiceMarshaller());
template.setDefaultUri(environment.getProperty("cg.service.url"));
return template;
}
然后創建ChargingGatewayServiceProxy並添加它們的自動連線。
@Autowired
private WebServiceTemplate cgServiceTemplate;
@Autowired
private Jaxb2Marshaller marshaller;
在VoucherServiceProxy類內部,我創建了必要的方法。
然后,我嘗試部署它,但出現此錯誤 。
自動連接的依賴項注入失敗; 嵌套的異常是org.springframework.beans.factory.BeanCreationException:無法自動連線字段:私有org.springframework.ws.client.core.WebServiceTemplate lk.ideahub.symphony.product.dapp.common.VoucherServiceProxy.voucherServiceTemplate; 嵌套的異常是org.springframework.beans.factory.NoUniqueBeanDefinitionException:沒有定義類型為[org.springframework.ws.client.core.WebServiceTemplate]的合格Bean:需要單個匹配的Bean,但找到了2:getVoucherServiceTemplate,getChargingGatewayServiceTempla te
上下文初始化失敗org.springframework.beans.factory.BeanCreationException:創建名稱為'DAppSyncServiceImpl'的bean時出錯:自動連接依賴項的注入失敗; 嵌套的異常是org.springframework.beans.factory.BeanCreationException:無法自動連線字段:私有lk.ideahub.symphony.product.dapp.common.VoucherServiceProxy lk.ideahub.symphony.product.dapp.sync.service.DAppSyncServiceImpl.voucherServiceProxy; 嵌套異常是org.springframework.beans.factory.BeanCreationException:創建名稱為'voucherServiceProxy'的bean時出錯:自動連接依賴項的注入失敗; 嵌套的異常是org.springframework.beans.factory.BeanCreationException:無法自動連線字段:私有org.springframework.ws.client.core.WebServiceTemplate lk.ideahub.symphony.product.dapp.common.VoucherServiceProxy.voucherServiceTemplate; 嵌套的異常是org.springframework.beans.factory.NoUniqueBeanDefinitionException:沒有定義類型為[org.springframework.ws.client.core.WebServiceTemplate]的合格Bean:需要單個匹配的Bean,但找到了2:getVoucherServiceTemplate,getChargingGatewayServiceTemplate
當我在ModuleConfig類中注釋與一個服務代理相關的bean方法時,其他服務代理就可以正常工作。 但是不能同時部署。
有人可以幫我找到在同一個項目中創建這兩個服務代理類而又沒有任何bean工廠錯誤的方法。
在兩個WebServiceTemplate
中都添加一個@Qualifier
,以進行創建和使用,因此Spring可以區分它們並知道要使用哪個。
@Bean
@Qualifier("voucher")
public WebServiceTemplate getVoucherServiceTemplate() {...}
@Bean
@Qualifier("chargingGateway")
public WebServiceTemplate getChargingGatewayServiceTemplate() {...}
注射,例如:
@Autowired
@Qualifier("chargingGateway")
public WebServiceTemplate chargingGatewayServiceTemplate;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.