/ / Пролет JavaConfig + JAX-WS Клиент - пролет, jax-ws

Пролет JavaConfig + JAX-WS Клиент - пролет, jax-ws

Трябва да създам клиент за уеб услуги, за да получа спортни данни. Но ще получа изключение, когато се опитвам @Autowired sportsdata.

Изключение:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [de.openligadb.schema.SportsdataSoap] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

JavaConfig:

@Configuration
@ComponentScan(basePackages = "com.example", excludeFilters = { @Filter(Configuration.class) })
public class MainConfig {
private @Value("${openligadb.wsdlDocumentUrl}") String wsdlDocumentUrl;
private @Value("${openligadb.endpointAddress}") String endpointAddress;
private @Value("${openligadb.namespaceUri}") String namespaceUri;
private @Value("${openligadb.serviceName}") String serviceName;

@Bean
public JaxWsPortProxyFactoryBean sportsdata() throws MalformedURLException {
JaxWsPortProxyFactoryBean ret = new JaxWsPortProxyFactoryBean();
ret.setWsdlDocumentUrl(new URL(wsdlDocumentUrl));
ret.setServiceInterface(SportsdataSoap.class);
ret.setEndpointAddress(endpointAddress);
ret.setNamespaceUri(namespaceUri);
ret.setServiceName(serviceName);
return ret;
}

@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer ret = new PropertySourcesPlaceholderConfigurer();
ret.setLocation(new ClassPathResource("application.properties"));
return ret;
}
}

И да: знам @PropertySource но трябва да създам боб, за да го използва и по-късно в моя контролер.

Отговори:

4 за отговор № 1

Това е FactoryBean проблем с оперативната съвместимост с @Configuration, Погледни при този отговор за детайли.

Кратката версия е да добавите боб специално към вашата конфигурация.

@Bean
public SportsdataSoap sportsdataSoap() throws ... {

return (SportsdataSoap) sportsdata().getObject();
}