浅谈 Spring boot2.0 中 响应式 Spring WebFlux 和 WebClient

 Spring WebFlux是随Spring 5推出的响应式Web框架。Spring webFlux在Spring Boot框架中的位置和功能,如下图。

响应式Spring的道法术器(Spring WebFlux 快速上手 + 全面介绍)

从这个图就可以看出对支持Spring 5的Spring Boot 2.0来说,新加入的响应式技术栈是其主打核心特性。

具体来说,Spring Boot 2支持的响应式技术栈包括如下:

  • Spring Framework 5提供的非阻塞web框架Spring Webflux;
  • 遵循响应式流规范的兄弟项目Reactor;
  • 支持异步I/O的Netty、Undertow等框架,以及基于Servlet 3.1+的容器(如Tomcat 8.0.23+和Jetty 9.0.4+);
  • 支持响应式的数据访问Spring Data Reactive Repositories;
  • 支持响应式的安全访问控制Spring Security Reactive;
  • 等。

spring-boot-starter-webflux 依赖,是我们核心需要学习 webflux 的包,

里面默认包含了 spring-boot-starter-reactor-netty 、spring 5 webflux 包。也就是说默认是通过 netty 启动的。

如果不想用netty作为启动,想用servlet3.1 作为容器,则可以用下面的pom例子

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-reactor-netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webflux</artifactId>
            <version>5.1.3.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-reactor-netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-reactor-netty</artifactId>
        </dependency>

官方给的一个如何build rest服务的例子为:

http://spring.io/guides/gs/reactive-rest-service/

更多介绍webclient, webflux概念和编程的内容,见如下的连接,就不搬砖了。

【推荐】https://blog.csdn.net/jeffli1993/article/details/79941175

       http://blog.51cto.com/liukang/2090163

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot,有多种HTTP调用工具可供选择,如RestTemplate、WebClient、Feign等。这些工具在功能和使用方式上有所区别,下面是它们的主要优势和特点: 1. RestTemplate: - 优势:RestTemplate是Spring框架提供的传统同步式HTTP客户端工具,易于使用且功能齐全。它具有良好的兼容性和广泛的社区支持。 - 特点: - 提供同步式的阻塞调用方式,适用于传统的Web应用程序。 - 支持多种HTTP方法和请求/响应处理方式。 - 可以通过配置HttpMessageConverter进行请求和响应的自动序列化和反序列化。 - 提供了丰富的错误处理机制和异常处理能力。 2. WebClient: - 优势:WebClientSpring 5引入的新一代非阻塞式HTTP客户端,适用于构建响应式、非阻塞的Web应用程序。 - 特点: - 提供基于Reactor库的响应式编程模型,支持异步非阻塞的HTTP调用。 - 提供了丰富的操作符和函数式编程风格,使得编写异步流程更加简洁。 - 支持多种HTTP方法和请求/响应处理方式。 - 可以通过配置ExchangeStrategies进行请求和响应的自动序列化和反序列化。 - 提供了丰富的错误处理机制和异常处理能力。 3. Feign: - 优势:Feign是一个声明式的HTTP客户端工具,基于注解和接口定义,简化了HTTP调用的编写。 - 特点: - 基于接口和注解,使用起来更加简单和直观。 - 集成了Ribbon负载均衡和Hystrix断路器等功能,方便实现微服务架构的服务调用。 - 支持多种HTTP方法和请求/响应处理方式。 - 可以通过配置Encoder和Decoder进行请求和响应的自动序列化和反序列化。 - 提供了丰富的错误处理机制和异常处理能力。 选择何种工具取决于您的具体需求和项目特点。如果您需要传统的同步式HTTP调用,可以使用RestTemplate;如果您需要构建响应式、非阻塞的Web应用程序,可以使用WebClient;如果您希望通过声明式的方式简化HTTP调用,可以使用Feign。此外,根据具体情况,您还可以结合使用不同的工具以满足项目的特定要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值