Spring framework version 5 đã được release cùng với một module mới, Spring WebFlux, với chức năng hỗ trợ chúng ta xây dựng các ứng dụng Reactive web. Cụ thể như thế nào? Trong bài viết này, mình sẽ giới thiệu với các bạn một số kiến thức cơ bản về Spring WebFlux các bạn nhé!
Điều đầu tiên mà các bạn cần phải biết đó là Spring WebFlux mặc định sử dụng Project Reactor, thư viện hiện thực Reactive Streams mà mình đã giới thiệu với các bạn trong bài viết này, để hiện thực Reactive framework. Các bạn cũng có thể sử dụng các thư viện khác hiện thực Reactive Streams specification như RxJava, … để làm việc với Spring WebFlux.
Như các bạn đã biết, trong Spring MVC thì các thông tin của request từ client sẽ được đối tượng HttpServletRequest và những thông tin trả về cho client sẽ do đối tượng HttpServletResponse nắm giữ. Nhưng đối với Spring WebFlux với Reactive support, những thông tin từ request sẽ chứa trong đối tượng ServerHttpRequest, còn thông tin về response sẽ do đối tượng ServerHttpResponse nắm giữ. Body của request và response thay vì là các đối tượng InputStream và OutputStream, giờ sẽ là đối tượng Flux<DataBuffer>.
Ứng dụng sử dụng Spring WebFlux phải được chạy trên các server runtime hỗ trợ Servlet 3.1 trở lên với non-blocking I/O nhé các bạn! Nói chung phải là asynchronous runtime thì mới được.
Để phát triển các ứng dụng Reactive web sử dụng Spring WebFlux, chúng ta có 2 cách:
- Một là sử dụng Spring MVC với các annotation @Controller và @RestController.
- Hai là sử dụng Functional Programming với các đối tượng Routers và Handlers.
Trong các bài viết sau mình sẽ giới thiệu với các bạn từng cách một nhé.