Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Build Reactive MicroServices using Spring WebFlux/SpringBoot

Xây dựng MicroServices Reactive với Spring WebFlux/SpringBoot

Xây dựng MicroServices Reactive với Spring WebFlux/SpringBoot

Học cách lập trình Reactive và xây dựng MicroServices Reactive bằng Spring WebFlux và Project Reactor

4.5
(6,040 đánh giá)
40,291 học viên
Giảng viên
Pragmatic Code School
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 349.000đ -86%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
8.5 giờ video
202 bài giảng
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 18/03/2026

Bạn sẽ học được gì

Lập trình Reactive giải quyết những vấn đề gì?
Lập trình Reactive là gì?
Lập trình Reactive với Project Reactor
Học cách viết code Reactive lập trình tương tác với Cơ sở dữ liệu
Học cách viết Lập trình Reactive với Spring
Xây dựng một Reactive API từ đầu
Học cách xây dựng client Non-Blocking bằng WebClient
Viết các test case tự động end-to-end bằng JUNIT cho Reactive API

Yêu cầu

Cần ít nhất JDK 8
Một trong các IDE như IntelliJ, Eclipse, v.v.
Kiến thức về Spring Boot là bắt buộc để tận dụng tối đa khóa học này

Đối tượng phù hợp

Dành cho bất kỳ ai muốn học và xây dựng Reactive API bằng Spring WebFlux

Nội dung khóa học

31 phần • 117 bài giảng
1 Giới thiệu khóa học
2 Điều kiện tiên quyết
1 Mã nguồn
2 Slide khóa học
1 Tại sao cần Lập trình Reactive - Phần 1?
2 Tại sao cần Lập trình Reactive - Phần 2?
1 Lập trình Reactive là gì?
2 Giới thiệu về Reactive Streams
1 Xây dựng RestFul API Non-Blocking (Reactive) với Spring WebFlux
1 Giới thiệu về Project Reactor
2 Các kiểu Reactive trong Reactor - Flux và Mono
1 Thiết lập dự án
1 Viết Flux đầu tiên của chúng ta
2 Viết Mono đầu tiên của chúng ta
3 Các sự kiện trong Reactive Streams
4 Kiểm thử Flux bằng JUnit5
5 Biến đổi dữ liệu bằng các Operator trong Project Reactor
6 Biến đổi bằng toán tử map()
7 Reactive Streams là bất biến (Immutable)
8 Lọc bằng toán tử filter()
9 Biến đổi nâng cao bằng toán tử flatMap()
10 Thao tác bất đồng bộ bằng toán tử flatMap()
11 Biến đổi nâng cao bằng toán tử concatMap()
12 Toán tử flatMap() trong Mono
13 Toán tử flatMapMany() trong Mono
14 Biến đổi bằng toán tử transform()
15 Xử lý dữ liệu trống bằng các toán tử defaultIfEmpty và switchIfEmpty()
16 Giới thiệu về Kết hợp Reactive Streams
17 Kết hợp Reactive Streams bằng toán tử concat và concatWith
18 Kết hợp Reactive Streams bằng toán tử merge() và mergeWith()
19 Kết hợp Reactive Streams bằng toán tử mergeSequential()
20 Kết hợp Reactive Streams bằng toán tử zip và zipWith()
1 Giới thiệu về Spring WebFlux
2 Chúng ta sẽ xây dựng gì trong khóa học này?
1 Thiết lập dự án
1 Xây dựng API Non-Blocking đơn giản - Flux
2 Xây dựng API Non-Blocking đơn giản - Mono
3 Xây dựng API Stream vô hạn (SSE)
1 Giới thiệu về Kiểm thử tự động
2 Kiểm thử Endpoint Spring Webflux bằng Annotation @WebFluxTest
3 Các phương pháp khác nhau để kiểm thử một Endpoint
4 Kiểm thử JUnit cho Endpoint Mono
5 Kiểm thử JUnit cho Streaming Endpoint - SSE
1 Thiết lập Document MovieInfo
2 Cấu hình ReactiveMongoDB Repository cho Document MovieInfo
3 Cấu hình thông tin server MongoDB trong file application.yml
4 Thiết lập Integration Test bằng @DataMongoTest
5 Viết Integration Test cho findAll() MovieInfo Document
6 Viết Integration Test cho findById() MovieInfo Document
7 Viết Integration Test cho việc lưu MovieInfo Document
8 Viết Integration Test cho việc cập nhật MovieInfo Document
9 Viết Integration Test cho việc xóa MovieInfo Document
1 Xây dựng endpoint POST để tạo mới MovieInfo
2 Integration Test cho endpoint POST bằng JUnit5
3 Xây dựng endpoint GET để lấy tất cả MoviesInfo
4 Xây dựng endpoint GET để lấy một MovieInfo theo ID
5 Xây dựng endpoint PUT để cập nhật một MovieInfo theo ID
6 Xây dựng endpoint DELETE để xóa một MovieInfo theo ID
1 Thiết lập UnitTest trong WebFlux
2 Unit Test cho endpoint GetAllMovieInfos - GET
3 Unit Test cho endpoint tạo MovieInfo - POST
4 Unit Test cho endpoint cập nhật MovieInfo - PUT
1 Bean Validation cho Name, Year với các Annotation Validators @NotBlank và @Positive
2 Tùy chỉnh xử lý lỗi mặc định bằng ControllerAdvice
3 Bean Validation cho trường List bằng Annotation @NotBlank
1 Tại sao cần ResponseEntity trong Spring WebFlux
2 Sử dụng ResponseEntity để thay đổi động trạng thái Response
1 Triển khai truy vấn tùy chỉnh để lấy MovieInfo theo Year
2 Endpoint GET để lấy MovieInfo theo Year - Sử dụng @RequestParam
1 Netty hoạt động với Spring Webflux như thế nào?
2 Netty xử lý Request như thế nào?
1 Giới thiệu về Functional Web
2 Xây dựng RestFul API đơn giản bằng Functional Web
1 Thiết lập Repository Class cho Review Document
2 Xây dựng endpoint POST để tạo mới Review
3 Viết Integration test cho việc tạo mới Review
4 Xây dựng endpoint GET để lấy tất cả Reviews
5 Lồng ghép Endpoints bằng hàm nest()
6 Xây dựng endpoint PUT để cập nhật Review hiện có
7 Xây dựng endpoint DELETE để xóa Review hiện có
8 Xây dựng endpoint GET để lấy reviews cho một MovieInfoId nhất định
1 Thiết lập Test Class cho Unit Testing
2 Unit Test endpoint POST để tạo mới Review
1 Thêm Annotation/Messages ràng buộc trong Review Document
2 Xác thực Bean bằng Validator
3 Unit Testing Bean Validation
1 Triển khai GlobalErrorHandler trong Functional Web
1 Resource NotFound(404) khi cập nhật Review bằng GlobalErrorHandler
2 Resource Not Found(404) khi cập nhật Review - Phương pháp thay thế
1 Tổng quan về Ứng dụng
2 Thiết lập Controller trong MoviesService
3 Giới thiệu về Spring WebClient & Cấu hình WebClient
4 Xây dựng REST Client NonBlocking cho MovieInfoService bằng Spring WebClient
5 Xây dựng REST Client NonBlocking cho ReviewService bằng Spring WebClient
6 Kết hợp MoviesInfoRestClient và ReviewRestClient
1 Network Exceptions trong giao tiếp giữa các Service
2 Xử lý lỗi 4XX trong MoviesInfoService bằng WebClient
3 Xử lý lỗi 5xx trong MoviesInfoService bằng WebClient
4 Triển khai xử lý lỗi 4XX và 5XX trong ReviewsClient
1 Giới thiệu về WireMock
2 Thiết lập Wiremock trong Integration Tests
3 Stubs cho MoviesInfoService và ReviewService
4 Mô phỏng lỗi 4xx trong Wiremock
5 Mô phỏng lỗi 5xx trong Wiremock
1 Tại sao cần thử lại các HTTP Calls thất bại?
2 Thử lại các Http calls thất bại bằng retry()
3 Thử lại các Http calls thất bại bằng retrySpec() - Với BackOff trước khi thử lại
4 Thử lại các Http calls thất bại bằng retrySpec() - Thử lại các Exception cụ thể
5 Tái sử dụng logic retry trên các Rest Clients khác nhau
1 Ôn tập về Server Sent Events (SSE)
2 Giới thiệu về Sinks
3 Thực hành với Sinks
4 Xây dựng Streaming Endpoint trong MoviesInfoService
5 Integration Test cho Streaming Endpoint
6 Xây dựng Streaming Endpoint trong MoviesReviewService
7 Xây dựng Streaming Client bằng WebClient trong MoviesService
1 Bài giảng thưởng

Giới thiệu khóa học

This course is structured to give you both the theoretical and coding aspect of Reactive Programming and Reactive RestFul APIs using Spring WebFlux.

If you are looking forward to learn the below listed things:

  • What is Reactive Programming ?

  • Write Reactive Programming code with Spring WebFlux.

  • Write Reactive Programming code with DB.

  • Building Reactive RestFul APIs with Spring WebFlux

Then this is the right course for you. This is a pure hands on oriented course where you will be writing lots of code.

By the end of this course you will have the complete understanding of coding and implementing a Reactive API using Spring WebFlux.

Why Reactive Programming ?

  • This section highlights about the need for reactive programming and explains in detail about the current execution model in spring-mvc.

  • This sections explains about the drawbacks in spring-mvc.

  • This section explains about the concurrency model in spring-mvc.

What is Reactive Programming?

  • This section talks about "What is Reactive Programming ?"

  • How Reactive programming works in a nutshell using a simple example.

  • This section will give you all an introduction to Reactive Streams Specification.

  • This section will give all an introduction to "Reactive Libraries" that are out there.

Getting started with Project Reactor

  • This section will give you all the fundamentals of Project Reactor and explore the project reactor using some examples.

  • This section covers the Reactive Types Flux and Mono in detail.

Setting up the Project for this course

  • In this section we will set up the project for this course using the Spring Intializr website.

Reactive Programming (Flux and Mono) - Hands on + Junit Testing

  • In this section we will explore about how Flux and Mono works via code.

  • We will do live coding on how to write Junit test cases using Flux and Mono.

  • We will explore lot of different operators in Flux and Mono.

Build the first Non Blocking RESTFUL API using Annotated Controllers - Hands On

  • In this section we will build the first non blocking API using the annotated controllers.

  • This section covers the fundamentals of how the reactive API works.

  • This sections also covers the coding aspect of how to return a Flux/Mono from an end point.

  • This section also covers how to write JUNIT test cases using WebTestClient.

Build Non Blocking RESTFUL API using Functional Web - Hands On

  • In this section we will build the non blocking API using the Functional Web Module.

  • This sections explains about the RouterFunction and HandlerFunction which forms the foundation for Function Web Module.

  • This section also covers how to write JUNIT test cases using WebTestClient.

Spring WebFlux & Netty - Execution Model

  • This section explains about the different layers behind WebFlux to serve a HTTP Request/Response.

  • This sections covers the concepts of NETTY such as Channel, EventLoop and some of the technical aspects of Netty.

Overview of the Reactive API

  • This section will give you an Overview of the Reactive API that we are going to build as part of this course.

Reactive Programming in Databases - MongoDB - Hands On

  • In this section we will learn about how to write the reactive programming code with MongoDB.

  • Define the Item Document for the project.

  • This section covers about how to configure different profiles in Spring Boot.

  • In this section we will set up the ItemReactive Mongo DB adapter.

  • This section also covers how to write JUNIT test cases for the reactive repository.

Build the Item Reactive API Endpoint - Using RestController

  • In this section we will learn about how to code the Item CRUD Reactive API using the @RestController approach.

  • This section also covers how to write automated tests using JUNIT and the non blocking test client WebTestClient.

Build the Item Reactive API Endpoint - Using Functional Web

  • In this section we will learn about how to code the Item CRUD Reactive API using the Functional Web approach.

  • This section also covers how to write automated tests using JUNIT and the non blocking test client WebTestClient.

Build Non Blocking Client using WebClient

  • In this section we will explore the techniques to interact with Reactive API using the WebClient.

  • Learn the techniques to Invoke the Reactive API using exchange() and retrieve() methods.

  • We will explore the GET, PUT, POST and DELETE operations using the WebClient.

Handling Exceptions in WebFlux - RestController

  • In this section we will code and explore different approaches to handle the exceptions/errors that occurs in the reactive api that’s built using RestController.

  • Handle exceptions using @ExceptionHandler and @ControllerAdvice.

  • This section also covers how to write JUNIT test cases for the Exception scenarios.

Handling Exceptions in WebFlux - Functional Web

  • In this section we will code and explore different approaches to handle the exceptions/errors that occurs in the reactive api that’s built using Functional Web.

  • Handle exceptions using WebExceptionHandler.

  • This section also covers how to write JUNIT test cases for the Exception scenarios.

WebClient - Exception Handling

  • In this section we will code and explore how to handle the exceptions using the WebClient.

  • Learn the techniques to handle the exceptions using exchange() and retrieve() methods.

Streaming Real Time Data using WebFlux - Server Side Events (SSE)

  • In this section we will code and learn about build an endpoint for Streaming RealTime Data using Mongo DB and Spring WebFlux.

  • This section covers about the Tailable Cursors and Capped Collections in Mongo DB.

  • Build a Non Blocking Streaming Endpoint and interact with the Mongo DB using the @Tailable annotation.

  • Learn to write Automated Tests using JUNIT for the Streaming Endpoints (SSE).


Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Backend Development
Hiển thị tất cả khoá học Java
Hiển thị tất cả khoá học Spring Boot
Hiển thị tất cả khoá học Web Development
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊