一、新建專案
示例使用IDEA快速創建基于SpringBoot的工程,
springboot 2.3.1
java 8
WebFlux 必須選用Reactive的庫

POM 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
二、Controller
WebFlux 的Controller 可以沿用SpringMVC 的方式,但是回傳結果需要使用Mono或者Flux,
創建一個介面,回傳http狀態碼
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
/**
* test
*
* @author opal
* @since 2020-07-17 10:04
*/
@RestController
@RequestMapping("/test")
public class TestController {
volatile int count502 = 0;
volatile int count200 = 0;
/**
* 回傳502狀態
* @author opal
* @since 2020-07-17 10:04
*/
@GetMapping("/status502")
public Mono<String> status502(ServerWebExchange exchange){
count502++;
String msg = "這是502頁面,第"+ count502 +"次訪問";
exchange.getResponse().setStatusCode(HttpStatus.BAD_GATEWAY);
System.out.println(msg);
return Mono.just(msg);
}
/**
* 回傳200狀態
* @author opal
* @since 2020-07-17 10:04
*/
@GetMapping("/status200")
public Flux<String> status200(){
count200++;
String msg = "這是200頁面,第"+ count200 +"次訪問";
System.out.println(msg);
return Flux.just("這是200頁面", ", 第"+ count200 +"次訪問");
}
}
跑起來測驗一下:

結語
WebFlux 應用中,所有資料都應該以Mono、Flux的形式表示,這樣才能帶來最好的性能和高吞吐量,Mono和Flux 這兩種資料模型是WebFlux的核心,
WebFulx要學好,需要掌握Reactor(Mono、Flux), 這跟stream很像,建議學習一下stream,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/141147.html
標籤:Java
