Spring 5 WebClient- метод извлечения не распознается Groovy, но работает с Java
Я использую groovy, spring5, springboot2, и я пытался заменить Resttemplate на InCorent WebClient, чтобы сделать некоторые синхронные вызовы HTTP(REST). Получить () в webClient.get().uri("").retrieve()
не распознается (ошибка компиляции) в.groovy, в то время как тот же код работает в.java
WebClientJava.java
import org.springframework.web.reactive.function.client.WebClient;
public class WebClientJava {
String retriever(){
WebClient webClient = WebClient.create();
String responsess = webClient.get().uri("").retrieve().bodyToMono(String.class).block();
return responsess;
}
}
WebClientGroovy.groovy
import org.springframework.web.reactive.function.client.WebClient
class WebClientGroovy {
String retriever(){
WebClient webClient = WebClient.create()
WebClient.RequestHeadersSpec responsess = webClient.get().uri("").retrieve().bodyToMono(String.class).block()
return responsess
}
}
я ожидаю, что это работает с Groovy, как это работает с Java. Кто-нибудь сталкивается или есть какие-то мысли?
1 ответ
Похоже, что ваша проблема вызвана ошибкой в IntelliJ IDEA, поскольку пример проекта успешно создается в командной строке с Maven.
uri
метод возвращает S
с S
определяется как S extends RequestHeadersSpec<?>
, Кажется, IDE не может справиться с этим и считает, что имеет дело с ?
который он рассматривает как java.lang.Object
, Я бы порекомендовал сообщить о проблеме в JetBrains.
В то же время, вы можете обойти эту проблему, передавая uri
:
String responses = ((WebClient.RequestHeadersSpec)webClient.get().uri(""))
.retrieve().bodyToMono(String.class).block()