上一章咱們提到過Mono 與 Flux,對於具體的介紹沒說到,這一章我在這裏簡單介紹一下,既然提到Mono和Flux,那確定得提到什麼是響應式編程,什麼是WebFlux。
對於關於什麼是響應編程,網上的說也不少,這裏簡單一句話介紹:html
Mono 和 Flux Reactor 是提供的兩種響應式APIjava
Spring Boot Webflux 就是基於 Reactor 實現的。Spring Boot 2.0 包括一個新的 spring-webflux 模塊。該模塊包含對響應式 HTTP 和 WebSocket 客戶端的支持,以及對 REST,HTML 和 WebSocket 交互等程序的支持。通常來講,Spring MVC 用於同步處理,Spring Webflux 用於異步處理。react
Spring Boot Webflux 有兩種編程模型實現,一種相似 Spring MVC 註解方式,另外一種是使用其功能性端點方式。註解的會在第二篇文章講到,下面快速入門用 Spring Webflux 功能性方式實現。web
在Spring官方有介紹,如圖所示:spring
這裏就不演示如何建立項目了,你們參考第一章,咱們須要引入Thymeleaf框架,在pom文件中添加以下內容便可:編程
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
引入Thymeleaf後咱們須要作一些簡單的配置,在application.properties文件中直接粘貼便可。主要是包括經常使用的編碼、是否開啓緩存等等。緩存
spring.thymeleaf.cache=true spring.thymeleaf.check-template=true spring.thymeleaf.check-template-location=true spring.thymeleaf.enabled=true spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.mode=HTML5 spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.servlet.content-type=text/html spring.thymeleaf.suffix=.html
編寫HTML,把文件放在resources/templates下app
<!DOCTYPE html> <html lang="zh-CN" xmlns:th="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Hello <span th:text="${name}"></span></h1> <h1>Now time <span th:text="${time}"></span></h1> </body> </html>
編寫Controller框架
package io.intodream.kotlin02.web import org.springframework.stereotype.Controller import org.springframework.ui.Model import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import reactor.core.publisher.Mono import java.time.LocalDateTime /** * @description * * @author Jwenk * @copyright intoDream.io 築夢科技 * @email xmsjgzs@163.com * @date 2019-03-24,18:24 */ @RequestMapping("/webflux") @Controller class IndexController { @GetMapping("/index") fun index(model : Model): Mono<String> { model.addAttribute("name", "Tom") model.addAttribute("time", LocalDateTime.now()) return Mono.create{ monoSink -> monoSink.success("index")} } }
啓動項目,訪問路徑http://localhost:8080/webflux/index異步
看到圖片裏面的內容則說明編寫成功了,在Controller裏面能夠直接返回String,而不是Mono<String> ,可是 Mono 表明着我這個返回 View 也是回調的。若是你們以爲文章有用麻煩點一下贊,有問題的地方歡迎你們指出來。