SpringBoot WebFlux響應式程式設計

2021-10-08 07:10:23 字數 2566 閱讀 7605

spring webflux是spring framework 5.0中引入的新的反應式web框架。 與spring mvc不同,它不需要servlet api,完全非同步和非阻塞, 並通過reactor專案實現reactive streams規範。 並且可以在諸如netty,undertow和servlet 3.1+容器的伺服器上執行。

flux 和 mono 是 reactor 中的兩個基本概念。flux 表示的是包含 0 到 n 個元素的非同步序列。 在該序列中可以包含三種不同型別的訊息通知:正常的包含元素的訊息、序列結束的訊息和序列出錯的訊息。 當訊息通知產生時,訂閱者中對應的方法 onnext(), oncomplete()和 onerror()會被呼叫。mono 表示的是包含 0 或者 1 個元素的非同步序列。 該序列中同樣可以包含與 flux 相同的三種型別的訊息通知。flux 和 mono 之間可以進行轉換。 對乙個 flux 序列進行計數操作,得到的結果是乙個 mono物件。把兩個 mono 序列合併在一起,得到的是乙個 flux 物件。

1)簡單業務而言:和其他普通物件差別不大,複雜請求業務,就可以提公升效能

2)通俗理解:

mono 表示的是包含 0 或者 1 個元素的非同步序列

mono->單一物件 user redis->使用者id-》唯一的使用者mono

flux 表示的是包含 0 到 n 個元素的非同步序列

flux->陣列列表物件 list redis->男性使用者->flux

flux 和 mono 之間可以進行轉換

@restcontroller 

public class myrestcontroller

public flux getusercustomers( @pathvariable long user)

public mono deleteuser( @pathvariable long user)

}

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

import org.springframework.web.reactive.function.server.routerfunction;

import org.springframework.web.reactive.function.server.serverresponse;

import static org.springframework.web.reactive.function.server.requestpredicates.*;

import static org.springframework.web.reactive.function.server.routerfunctions.route;

@configuration

public class routingconfiguration

}

import org.springframework.stereotype.component;

import org.springframework.web.reactive.function.server.serverrequest;

import org.springframework.web.reactive.function.server.serverresponse;

import reactor.core.publisher.mono;

@component

public class userhandler

public mono getusercustomers(serverrequest request)

public mono deleteuser(serverrequest request)

}

可以整合多個模板引擎

除了rest web服務外,您還可以使用spring webflux提供動態html內容。spring webflux支援各種模板技術,包括thymeleaf,freemarker

如果有spring-boot-starter-web去掉換成下面依賴

org.springframework.boot

spring-boot-starter-webflux

@restcontroller

public class testfluxcontroller );

}public monogettest2(@pathvariable("param")string param));

}public monogettest3(string param));

}public monogettest4(@requestbody mapmap));

}public fluxgettest5() catch (interruptedexception e)

return "localhost - > "+i;

}));

}}

響應式布局 響應式布局技巧

一理解幾種布局的概念 1 靜態布局 static layout 即傳統web設計,對於pc設計乙個layout,在螢幕寬高有調整時,使用橫向和豎向的滾動條來查閱被遮掩部分 意思就是不管瀏覽器尺寸具體是多少,網頁布局就按照當時寫 的布局來布置 對於移動裝置,單獨設計乙個布局,使用不同的網域名稱如wap...

響應式程式設計 什麼是響應式程式設計

那麼什麼是響應式程式設計,來看個簡單的例子 var i 1,j 2,k i j print k k k 3 i 3 j 4 print k k k 3在這裡把i,j,k當成某個狀態,k是j,i兩個狀態的組合,正常的程式設計中,在計算了k的狀態之後,再去改變j,i的狀態是不會影響到c的狀態的。所以在正...

vue響應式布局 Vue 響應式原理

vue2 的資料偵測 在 src observer 目錄裡面,元件例項在初始化時,會呼叫 observe 函式處理 data function initdata vm observe 改寫了所有物件屬性的 getter setter 和陣列原型上的 7 個會改寫陣列方法,從而讓 data 變成可響應...