1、Webflux
用于web开发,功能和springMVC类似,响应式编程实现,异步非阻塞。
关于异步非阻塞:
*异步和同步:都是针对调用者。调用者发送请求,如果等到对方回应之后才去做其他事情就是同步。如果发送请求后不用等就去做其他事,就是异步。
*阻塞和非阻塞:都是针对被调用者,被调用者收到请求之后,做完事情之后才给出反馈就是阻塞。被调用者收到请求之后,马上给出反馈再做事情就是非阻塞。
Webflux优势:
*异步非阻塞,有限资源下提高系统吞吐量和伸缩性,以Reactor为基础实现响应式编程
*函数式编程:Spring5基于java8,所以webflux可以用java8的函数式编程方式实现路由请求。
Spring webFlux和SpringMVC比较:两个框架都可以使用注解,都运行在Tomcat容器。但SpringMVC是命令式编程,webflux是异步响应式编程。
2、响应式编程:
响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。
(1)Java8及以前版本:
提供了两个观察者模式两个类:Observer和Observable
public class ObserverDemo extends Observable {
public static void main(String[] args) {
ObserverDemo observer=new ObserverDemo();
// add observer
observer.addObserver((o, arg) -> {
System.out.println("发生变化");
});
observer.addObserver((o, arg) -> {
System.out.println("收到被观察者通知,准备改变");
});
observer.setChanged();// data changing
observer.notifyObservers();//notify
}
}
(2)Flow类取代了Java9。两个方法:Subscribe订阅和Publish发布
3、Webflux执行流程和核心API
4、SpringWebflux(基于注解实现)
5、SpringWebflux(基于函数式编程实现)