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 编程大部分人都应该使用的是 MVC 模式吧。
简单点来说就是 Spring 或者应用服务器会针对你的每一次访问创建一个线程,这个线程是阻塞的。
考虑一个应用场景就是上传一个 N 大文件的的情况,这个是不是因为线程的阻塞导致了系统资源的浪费,那我们想,能不能针对高 IO 的情况,我们使用异步线程或者其他方式。
Spring 提供了一个异步的方式,但是针对高 IO 的情况可能更多使用的是 WebFlux。
Spring Security 为这 2 种相应访问请求的方式来配置安全性。
这就是在 Spring Security 文档中说的 reactive 。
其实早在去年,就有过这么一次面试: 北美亚特兰大一金融服务公司面试总结 ,但因为这响应式 Web 框架实在是应用场景不多,通常不是 Spring 框架实际使用的重点。
https://www.ossez.com/t/spring-security-servlet-reactive/14116
评论