1 環境搭建
1.1 版本說明
jdk -> 1.8
maven -3.5
springboot -> 2.0.3
開發工具 -> IDEA
1.2 創建項目
利用 IDEA 或者 start.spring.io 創建一個SpringBoot項目
1.2.1 選擇依賴
1.2.2 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.xiangxu</groupId> <artifactId>test_demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>test_demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <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-devtools</artifactId> <!--<scope>runtime</scope>--> <optional>true</optional> </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> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build> </project>
2 開發步驟
2.1 處理器類
相當於SpringMVC中的service類,主要就是根據不同的請求url執行不同的業務邏輯
技巧01:編寫的處理器類必須被容器所管理

package cn.xiangxu.test_demo.handler; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.server.ServerRequest; import org.springframework.web.reactive.function.server.ServerResponse; import reactor.core.publisher.Mono; /** * @author 王楊帥 * @create 2018-06-26 9:58 * @desc 相當於springMVC的controller類 **/ @Component public class StudentHandler { public Mono<ServerResponse> helloStudent(ServerRequest serverRequest) { return ServerResponse // 響應對象封裝 .ok() // 響應碼 .contentType(MediaType.TEXT_PLAIN) // 響應類型 .body(BodyInserters.fromObject("這是學生控制類")); // 響應體 } }
2.2 路由器類
相當於DispatherServlet,主要就是將不同的請求url和對應的處理器類進行匹配
技巧01:路由器類相當於一個Java配置類,所以必須添加 @Configuration 注解,並且路由器類中的路由方法返回的對象必須被容器管理,所以必須添加@Bean注解
技巧02:RouterFunctions的route方法接收兩個參數,並返回 RouterFunctions 類型
》參數一 :請求斷言
》參數二 :處理函數接口【可用lambda表達式代替】

package cn.xiangxu.test_demo.router; import cn.xiangxu.test_demo.handler.StudentHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.web.reactive.function.server.RequestPredicates; import org.springframework.web.reactive.function.server.RouterFunction; import org.springframework.web.reactive.function.server.RouterFunctions; import org.springframework.web.reactive.function.server.ServerResponse; /** * @author 王楊帥 * @create 2018-06-26 10:02 * @desc **/ @Configuration public class StudentRouter { @Bean public RouterFunction<ServerResponse> routerHelloStudent(StudentHandler studentHandler) { return RouterFunctions .route( // 路由匹配:將請求url路由到對應的處理器 RequestPredicates .GET("/student/hello") // 請求url .and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), // 接收的請求數據類型 studentHandler::helloStudent // 處理請求的處理方法 ); /* 代碼解釋:如果請求是/student/hello時就會調用StudentHandler處理器類中的helloStudent方法進行業務邏輯處理 */ } }
2.3 啟動項目
2.3.1 IDEA啟動
直接運行啟動類就可以啦
2.3.2 打包部署啟動
》打包項目
》運行項目
進入到項目根目錄下的target文件夾后通過 java -jar xxx.jar 就可以運行項目啦
技巧01:SpringBoot WebFlux 默認集成的是 Netty
2.3.3 前端訪問