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()
Другие вопросы по тегам