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 變成可響應...