本篇介紹如何在Eclipse建立Spring WebFlux專案。
Spring 5.0以後新增了Spring WebFlux,其與Spring Web MVC同為Spring的網頁框架,差別在於WebFlux是基於Reactive Stream響應式流的非阻塞式(non-blocking)回壓(back pressure)的實作Reactor的網頁框架。
範例環境:
- Windows 64 Bit
- Java 11
- Eclipse Version: 2019-03 (4.11.0)
- Spring Boot版本2.1.9.RELEASE
- Maven
在Eclipse建議使用Spring Tools (STS) plug-in來幫助我們建立Spring Boot專案。
在Eclipse的MarketPlace搜尋STS然後安裝。
安裝好後,新增一個Eclipse專案,點選Eclipse工具列的File -> New -> Other -> Spring Boot -> Spring Starter Project
。
接著設定Project資訊。
[Service URL]維持預設(http://start.spring.io)
[Name]自行任意命名,
[Type]為Maven,
[Java Version]為11
[Language]使用Java
[Packaging]改成Jar,即要打包成的檔案。
[Group],[Artifact]及[Package]為Maven Coordinates設定,不知道是什麼就按照範例設定即可。
完成後按Next >。
因為是要建立WebFlux專案,選擇Spring Reactive Web加入為dependency,然後按Finish。
至此Spring WebFlux專案便建立完成。
下面是STS自動生成的pom.xml
及SpringWebfluxApplication
。
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.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.abc</groupId>
<artifactId>spring-webflux</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-webflux</name>
<description>Spring WebFlux Demo</description>
<properties>
<java.version>11</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>
SpringWebfluxApplication
package com.abc.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringWebfluxApplication {
public static void main(String[] args) {
SpringApplication.run(SpringWebfluxApplication.class, args);
}
}
在專案上按滑鼠右鍵 -> Run As -> Spring Boot App
即可啟動。
接著建立WebFlux的RestController來處理request。
新增一個DemoController
。此為@RestController
,用來處理request及返回response的類別。
與WebMVC不同,WebFlux返回的請求若只有一個物件使用Reactor的Mono
包裝,若返回多個用Flux
。
新增一個DemoController
DemoController
package com.abc.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
@RestController
public class DemoController {
@GetMapping("/hello")
public Mono hello() {
return Mono.just("Hello Spring WebFlux RestController");
}
}
建立好後啟動專案,在瀏覽器輸入http://localhost:8080/hello
返回以下結果。
專案結構目錄如下。
參考:
沒有留言:
張貼留言