天天看點

Spring Security 介紹中的 servlet 和 reactive

最近在看看 Spring Security 中的内容。看到了下面一段話,還挺拗口的。

Spring Security 提供了一個 驗證(authentication), 授權(authorization),和保護常見攻擊 的架構。

Spring security 是一個強大的,并且可以高度定制的身份驗證和通路控制架構,能夠同時支援 imperative 和 reactive應用, Spring security 已經成為保護 Spring 應用實事上的标準。

有關完整的特性清單,請參考本參考指南中有關特性(Features) 部分的内容。

如果你已經開始準備對你的應用程式進行安全限制,請參考針對servle和 reactive 部分的内容。

解釋

這裡,提到了 2 個概念 servlet 和 reactive。Spring WebFlux 是 Spring Framework 5.0 中引入的新的響應式web架構。 與Spring MVC不同,它不需要Servlet API,是完全異步且非阻塞的,并且通過 Reactor 項目實作了 Reactive Streams 規範。

可以了解,servlet 和 reactive 是 2 個不同的處理方式,通常 MVC 模式是使用 servlet 的。reactive 是響應式,也可以說是反應式,主要特點就是異步處理,是基于 Spring WebFlux 架構的。

Spring Security 介紹中的 servlet 和 reactive

我們常用的 Spring 程式設計大部分人都應該使用的是 MVC 模式吧。

簡單點來說就是 Spring 或者應用伺服器會針對你的每一次通路建立一個線程,這個線程是阻塞的。

​​

Spring Security 介紹中的 servlet 和 reactive

​​

考慮一個應用場景就是上傳一個 N 大檔案的的情況,這個是不是因為線程的阻塞導緻了系統資源的浪費,那我們想,能不能針對高 IO 的情況,我們使用異步線程或者其他方式。

Spring 提供了一個異步的方式,但是針對高 IO 的情況可能更多使用的是 WebFlux。

Spring Security 為這 2 種相應通路請求的方式來配置安全性。

這就是在 Spring Security 文檔中說的 reactive 。

繼續閱讀