【问题标题】:How to use Spring WebClient without Spring Boot如何在没有 Spring Boot 的情况下使用 Spring WebClient
【发布时间】:2020-12-23 16:41:37
【问题描述】:

我对能够发出 HTTP 请求的需求非常有限。我看到 WebClient 是 RestTemplate 的新替代品。但是好像不能用WebClient,不拖入整个spring boot;这不是我想做的。没有 Spring boot 有什么方法可以使用 WebClient?

【问题讨论】:

  • 也许没有spring模块项目就不能做或者使用spring WebClient模块,因为它为你提供了配置!

标签: spring spring-boot spring-webclient


【解决方案1】:

我遇到了同样的问题,我解决了这个问题。

需要在src/main/resources文件夹下创建logback.xml文件 并复制此

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
</configuration>

如果你已经有了这个文件,只需在你的配置中添加这个 statusLIsener。

更多信息:http://logback.qos.ch/manual/configuration.html

【讨论】:

    【解决方案2】:

    您可以使用 Reactor Netty HttpClient (docs) 发出异步 HTTP 请求。 Spring WebClient 在后台使用它。 只需添加依赖项

    <dependency>
        <groupId>io.projectreactor.netty</groupId>
        <artifactId>reactor-netty</artifactId>
        <version>0.9.11.RELEASE</version>
    </dependency>
    

    提出要求

    HttpClient.create()
                .request(HttpMethod.GET)
                .uri("http://example.com/")
                .responseContent()
                .asString()
                .subscribe(System.out::println);
    

    【讨论】:

    • 感谢您的回答。我稍后会测试一下。我只是有一个明确的问题......使用它与在 Java 11 中使用新的 Httpclient 有何不同? (我被困在 Java 8 上,这就是为什么我什至不能使用它)。从我的立场来看,来自 project reactor 和 Java 11 的 http 客户端似乎都实现了相同的反应流。所以来自 project reactor 的一个是 spring 实现,而来自 Java 11 的一个是 JDK 实现。这是正确的吗?
    • 我用建议的 HttpClient 替换了我对 WebClient 的使用,一切正常。我接受了这个答案,尽管从技术上讲,这不是如何在没有 Spring Boot 的情况下使用 Spring WebClient 的答案——我认为这是不可能的。
    • 太棒了!谢谢。
    猜你喜欢
    • 2020-04-24
    • 1970-01-01
    • 2016-09-20
    • 2016-10-26
    • 2017-10-09
    • 2021-02-05
    • 2018-07-12
    • 2019-01-26
    • 2021-10-11
    相关资源
    最近更新 更多