如何在Spring Boot中为apache cxf生成的服务正确注入bean?

问题描述

我正在尝试为Soap Web Service实现客户端。我有一个Spring Boot应用程序,并使用apache cxf从wsdl生成了类。不知何故我在正确注入bean并使用其方法时遇到了问题。这是我的代码:

配置类:

@Bean(name = "myApiClient")
public GeneratedService myApiClient(MyCredentials credentials) {
    JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
    jaxWsProxyFactoryBean.setServiceClass(GeneratedService.class);
    jaxWsProxyFactoryBean.setAddress(getUrl());
    jaxWsProxyFactoryBean.setUsername(credentials.getUser());
    jaxWsProxyFactoryBean.setPassword(credentials.getPassword());

    return (GeneratedService) jaxWsProxyFactoryBean.create();
}

我的服务:

@Service
public class MyServiceImpl implements MyService {

    GeneratedService myApiClient;

    @Autowired
    public MyServiceImpl(GeneratedService myApiClient) {
        this.myApiClient = myApiClient;
    }

    @Override
    public List<MyObject> someMethod() {
        return myApiClient.someApiMethod();
    }
}

我得到的错误:

构造函数MyServiceImpl的参数0需要一个类型为bean的bean 找不到“ ... GeneratedService”。

解决方法

尝试使用带有@Autowired标签或@Resource标签的注入服务。

    @Autowired
    GeneratedService myApiClient;
    @Resource(name="myApiClient")
    GeneratedService myApiClient;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...