首先我们要弄明白Web Flux是什么?Spring webflux是一种编程范例,可以使用lambda函数风格(声明式风格)组合Spring Boot应用程序。Spring Webflux和Spring Web是两个完全不同的Web栈。 然而, Spring Webflux继续支持基于注解的编程模型。虽然这两个堆栈定义的端点可能看起来相似,但测试这种端点的方式是相当不同的
Spring Boot应用程序可以用命令风格(如传统Spring WebMVC)或函数风格(如Spring WebFlux)编写。下面是使用pring WebFlux三个注意点:
1.目前,spring boot支持Spring WebMVC或WebFlux模型,因此我们不能在一个应用程序中两者混合使用。如果使用pring WebFlux,就不应该使用@RestController注释,并不要在pom.xml中配置spring-boot-starter-web依赖。
2.REST端点应该在@Configuration注释的类上使用, 被定义为RouerFunction的一个Bean,既不是在@RestController注释类,也不是在@Controller注释上使用。
3.Web Flux支持Java 8 lamba表达式,Web MVC是同步阻塞的IO模型,而Web Flux是异步非阻塞的IO模型。
Web Flux有什么特点?
1.Spring WebFlux是异步,非阻塞的。
2.WebFlux有Mono,Flux两种集合类型。
3.Mono是0->1集合类型,比如Mono。
4.Flux是1->n集合类型,比如Flux<List>
5.Mono,Flux都是异步处理的,而集合对象基本上是同步的。
Web Flux(Netty)跟Web MVC(Servlet)优缺点?
1.Web Flux的效率(qps)比Web MVC高。
2.Web Flux的编程难度高,维护成本高,对于切面等不好编写。
Web Flux实践
与Web MVC类似。我们声明我们的路由类为 @Configuration,然后初始化一个Bean。
在Web Flux请求的接口是RequestServer,响应的接口是ResponseServer。
其中RouterFunction提供了route,通过在route这个方法我们设置RequestPredicates
的路由行为,从而达到接受请求。
举报/反馈

雷小天博客

1445获赞 350粉丝
IT软件开发自媒体人,站长
关注
0
0
收藏
分享