Spring Boot WebFlux響應式Web框架


Spring Boot WebFlux響應式Web框架


一、什麼是WebFlux

Spring框架中包含的原始Web框架Spring Web MVC是專門為Servlet API和Servlet容器而構建的。WebFlux是在Spring 5中添加。Spring webflux 有一個全新的非堵塞的函數式 Reactive Web 框架,可以用來構建異步的、非堵塞的、事件驅動的服務,在伸縮性方面表現非常好。

Spring Boot WebFlux響應式Web框架

Spring WebFlux 是 Spring 5 的一個新模塊,包含了響應式 HTTP 和 WebSocket 的支持,另外在上層服務端支持兩種不同的編程模型:

  • 基於 Spring MVC 註解 @Controller 等
  • 基於 Functional 函數式路由

二,Spring MVC與WebFlux對比

Spring MVC和Spring WebFlux可以一起使用,從設計上講,它們互為繼續、互為一致。它們的關係,請看下圖,既有共同的部分,也有互相獨立的部分。


Spring Boot WebFlux響應式Web框架

Spring MVC的特點就是,它是命令式編程,代碼非常容易寫,也好理解和調試。但是它是同步的,會有人覺得它性能不好。

WebFlux響應式和非阻塞的關鍵好處是,在使用很少固定數目的線程和較少的內存情況下的擴展能力。

三、WebFlux示例代碼

1.首先我們添加pom文件配置

需要添加spring-boot-starter-webflux作為我們pom文件中的依賴項。

<code><dependency>  <groupid>org.springframework.boot/<groupid>  <artifactid>spring-boot-starter-webflux/<artifactid>  <version>2.0.8.RELEASE/<version>/<dependency>/<code>

2.添加application.properties

我們指定服務的端口為8088

<code>server.port=8088/<code>

3.新增Action

Action處理請求的返回類型採用響應式類型

<code>@RestControllerpublic class WebFluxAction { @GetMapping("/hello") public Mono<string> hello() { //使用Mono.just生成響應式數據 return Mono.just("hello world"); }}/<string>/<code>

完成上述三部後我們啟動服務,可以看到服務運行與netty框架之上:

<code>r.ipc.netty.tcp.BlockingNettyContext     : Started HttpServer on /0:0:0:0:0:0:0:0:8088o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port(s): 8088/<code>

Netty是一套異步的、事件驅動的網絡應用程序框架和工具,能夠開發高性能、高可靠性的網絡服務器和客戶端程序。


分享到:


相關文章: