爲什麼要創建Spring WebFlux ?
一方面是需要一個非阻塞的web 技術棧使用少量的線程和硬件資源來處理併發。另一方面就是函數式編程。
什麼是響應式?
響應式是制圍繞響應改變而構建的編程模型。例如,響應I/O事件的網絡組件、響應鼠標事件的UI控制器等等。
快速入門
本文我們將學習如何快速構建Spring WebFlux 應用,實現一個簡單的Http處理。
一、創建基礎項目
由於Spring WebFlux是基於Spring Framework 5.0,以及Spring Boot 2.0 基於Spring FrameWork 5.0, 所以我們使用Spring Boot 2.0+ 來構建項目。
Spring 官方提供了 Spring Initializer 工具,幫助我們快速的生成Spring Boot 項目。
二、將項目導入到 IDEA 中
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
三、編寫一個HTTP 接口
-
創建package 爲
com.example.springbootdemo.webflux
-
創建
HelloHandler
類, 內容如下:@Component public class HelloHandler { public Mono<ServerResponse> greeting(ServerRequest request) { return ServerResponse.ok().bodyValue("Hello World"); } }
-
創建
HelloRouter
類,路由規則,內容如下:@Configuration public class HelloRouter { @Bean public RouterFunction<ServerResponse> routes(HelloHandler helloHandler) { return RouterFunctions.route(RequestPredicates.GET("/hello"), helloHandler::greeting); } }
-
啓動主程序,使用Postman工具或者瀏覽器發起請求:
http://localhost:8080/hello
,可以看到返回結果:Hello World
至此使用 Spring WebFlux 構建了一個簡單的請求項目。