Getting Started with the Course
  • Course Introduction
  • Prerequisites
Source Code for the course
  • Source Code
  • Course Slides
Why Reactive Programming ?
  • Why Reactive Programming ?
  • Traditional Rest API Design - How it works ?
Introduction to Reactive Programming
  • What is Reactive Programming ?
  • Reactive Streams Specification
  • Reactive Libraries
Getting started with Project Reactor
  • Introduction to Project Reactor
  • Reactor Types - Flux and Mono
Setting up the Project for this course
  • Project Setup
Reactive Programming (Flux and Mono) - Hands on + JUNIT Testing
  • Flux - How it works ?
  • Flux - Learn to write JUNIT Tests
  • Mono - How it works and write Junit Tests
  • Flux/Mono - Exploring Factory methods
  • Filtering a Reactive Stream
  • Transforming a Reactive Stream using map
  • Transforming a Reactive Stream using flatMap
  • Combining Reactive Streams
  • Handling Errors in a Reactive Stream
  • Infinite Reactive Stream
  • Back Pressure - How it works ?
  • Push/Pull Communication Model
  • Hot vs Cold Reactive Streams
  • Virtualizing Time in Junit
  • How to get help ?
Build the first Non Blocking RESTFUL API using Annotated Controllers - Hands On
  • Introduction to Spring Boot 2
  • Build the Simple Non Blocking API
  • Junit : Test for Non Blocking API using WebTestClient
  • Junit : Test for infinite Non Blocking Sequence API using WebTestClient
  • Build the simple Non Blocking API - Mono
Build Non Blocking RESTFUL API using Functional Web - Hands On
  • Introduction to Functional Web in Spring WebFlux
  • Build the simple Non Blocking API using Handler and Router Functions
  • Junit : Test for Functional EndPoint using WebTestClient
Spring WebFlux & Netty - Execution Model
  • Spring WebFlux - Behind the Scenes
  • Introduction to Netty - Channel, EventLoops
  • Netty - End to End, Threads, Execution Model
Overview of the Item Reactive API Application
  • Application Overview
Reactive Programming with DB - Hands On
  • Setting up Mongo DB
  • Spring Profiles
  • Build the "Item" Document
  • Build the Reactive Item Mongo Repository
  • Reactive Mongo Repository operations using JUNIT - Read - Part1
  • Reactive Mongo Repository operations using JUNIT - Read - Part2
  • Reactive Mongo Repository operations using JUNIT - Custom Read Operation
  • Reactive Mongo Repository operations using JUNIT - Insert
  • Reactive Mongo Repository operations using JUNIT - Update
  • Reactive Mongo Repository operations using JUNIT - Delete
  • Build Artifact
Build the Item Reactive API Endpoint - Using RestController - Hands On
  • Get All Items
  • Initialize the data using CommandLineRunner
  • Get All Items - JUNIT Test using WebTestClient - Part 1
  • Get All Items - JUNIT Test using WebTestClient - Part 2
  • Get a Single Item
  • Create an Item EndPoint
  • Delete an Item Endpoint
  • Update an Item Endpoint
  • Update an Item Endpoint - JUNIT
Build the Item Reactive API Endpoint - Using Functional Web - Hands On
  • Setting up the Router Function and Handler Function for Item Reactive API
  • Get All Items - Functional Endpoint
  • Get All Items - JUNIT Test using WebTestClient
  • Write Junit Test Case to get all items using different approaches
  • Get a Single Item - Functional Endpoint
  • Create an Item - Functional Endpoint
  • Write the Junit test case for Create Item Endpoint
  • Delete an Item - Functional Endpoint
  • Write the Junit test case for Delete Item Functional Endpoint
  • Update an Item - Functional Endpoint
  • Assignment - Write the Junit test case for Update Item Endpoint
Build Non Blocking Client using WebClient - Hands On
  • Setting up the Item WebClient Project
  • Explore the retrieve() and exchange() in WebClient
  • Passing Path Variable using WebClient
  • Post call using WebClient
  • PUT call using WebClient
  • Delete call using WebClient
Handling Exceptions in WebFlux - RestController - Hands On
  • Handling Exceptions using @ExceptionHandler
  • Handling Exceptions using @ControllerAdvice
  • Handling Exceptions in Controller - JUNIT
Handling Exceptions in WebFlux - Functional Web - Hands On
  • Default Exception Behavior - Functional Web
  • Handling Exceptions using AbstractErrorWebExceptionHandler
  • Handling Exceptions in Functional Web - JUNIT
Build Non Blocking Client using WebClient - Exception Handling - Hands On