Как получить клиент Feign из интерфейса Feign из другой библиотеки - PullRequest
0 голосов
/ 31 января 2019

У меня есть приложение Spring, и мне нужно получить некоторые данные из REST API, для этого у меня есть сторонняя библиотека, которая использует Feign.Он предоставляет интерфейс, который имеет аннотации Feign, но я не могу получить рабочий объект.Я добавил в pom spring-cloud-starter-openfeign

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>2.1.0.RELEASE</version>
    </dependency>

Это код моей библиотеки

public interface MyFeignRepository {

@RequestLine("GET /my_repo/geodatamatcher/extractGeoCities/{application}/{country}/{environment}?string={query}")
String extractGeoCities(@Param("application") String application,
                        @Param("country") String country,
                        @Param("environment") String environment,
                        @Param("query") String query);
}

Я пытался сделать что-то подобное, но получил java.lang.AbstractMethodError: null Как получить симулированного клиента?

@Import(FeignClientsConfiguration.class)
class MyFeignRepositoryFeignClient {

private MyFeignRepository myFeignRepository;

@Autowired
MyFeignRepositoryFeignClient(final Decoder decoder, final Encoder encoder, final Client client, final Contract contract) {
    this.myFeignRepository = Feign.builder().client(client)
            .encoder(encoder)
            .decoder(decoder)
            .contract(contract)
            .target(MyFeignRepository.class, "http://example.com");
}
}

Моя трассировка стека при попытке запустить это приложение

java.lang.AbstractMethodError: null
    at org.springframework.core.OrderComparator.findOrder(OrderComparator.java:142) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.core.annotation.AnnotationAwareOrderComparator.findOrder(AnnotationAwareOrderComparator.java:65) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.core.OrderComparator.getOrder(OrderComparator.java:125) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.core.OrderComparator.getOrder(OrderComparator.java:113) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.core.OrderComparator.doCompare(OrderComparator.java:82) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.core.OrderComparator.compare(OrderComparator.java:68) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at java.util.TimSort.countRunAndMakeAscending(TimSort.java:360) ~[na:1.8.0_171]
    at java.util.TimSort.sort(TimSort.java:220) ~[na:1.8.0_171]
    at java.util.Arrays.sort(Arrays.java:1512) ~[na:1.8.0_171]
    at java.util.ArrayList.sort(ArrayList.java:1462) ~[na:1.8.0_171]
    at org.springframework.boot.SpringApplication.asUnmodifiableOrderedSet(SpringApplication.java:1344) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.getListeners(SpringApplication.java:1253) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
    at org.springframework.boot.context.event.EventPublishingRunListener.contextLoaded(EventPublishingRunListener.java:85) ~[spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplicationRunListeners.contextLoaded(SpringApplicationRunListeners.java:66) ~[spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:408) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1277) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1265) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
...