Spring 5 WebClient检索方法无法用Groovy识别,但可用于Java

时间:2019-05-21 15:04:41

标签: spring spring-webflux spring-webclient

我正在使用groovy,spring5,springboot2,并且我试图用WebClient替换Resttemplate以便进行一些同步的HTTP(REST)调用。 webClient.get().uri("").retrieve()中的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 个答案:

答案 0 :(得分:1)

您的问题似乎是由于IntelliJ IDEA中的错误引起的,因为示例项目已使用Maven在命令行上成功构建。

uri方法返回S,其中S被定义为S extends RequestHeadersSpec<?>。 IDE似乎无法解决此问题,并认为它正在处理?,它被视为java.lang.Object。我会推荐reporting the problem to JetBrains

与此同时,您可以通过投射uri的收益来解决此问题:

String responses = ((WebClient.RequestHeadersSpec)webClient.get().uri(""))
        .retrieve().bodyToMono(String.class).block()