AdSense

網頁

2019/10/10

Eclipse 建立 Spring WebFlux 專案範例

本篇介紹如何在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.xmlSpringWebfluxApplication

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返回的請求若只有一個物件使用ReactorMono包裝,若返回多個用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返回以下結果。



專案結構目錄如下。




參考:

沒有留言:

AdSense