前几天偶然间看到了一个比较新的框架 WebFlux,可能之前也看过,看了下介绍,据说是Spring5 之后新加的,底层采用了Reactor 模式,默认是Netty启动的,有更高的网络吞吐量及并发性,正好最近在重拾Netty,索性就在此记录一下
反应器模式
其实reactor好像有点类似前端(移动端)的思想,前两年就听Android端有RxJava,Retrofit之类的,思想上差不多,都叫响应式编程,这点跟Netty是一致的,基于事件驱动(非阻塞式)的设计模型,而不是阻塞式(传统IO)的
WebFlux 简介
官网
可以看出除了可以以传统方式开发之外,还可以进行函数式的基于事件驱动的web开发
初探
这次就不深究了,先尝尝鲜,体验一下,上代码
引入包(这里我们使用SpringBoot 下的包,易上手)
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux', version: '2.4.3'
启动类
@SpringBootApplication
@EnableWebFlux
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
controller
@Component
public class DemoHandler {
public Mono<ServerResponse> getWord(ServerRequest serverRequest) {
return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN)
.body(BodyInserters.fromValue("Hello WebFlux"));
}
}
router
@Configuration
public class DemoRouter {
@Bean
public RouterFunction<ServerResponse> router(DemoHandler handler) {
return RouterFunctions.route(RequestPredicates.GET("demo")
.and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), handler::getWord);
}
}
总结
感觉略有点不顺手,可能是因为不习惯,后续在观察观察
还有据说是不支持mysql,后面再考证