We may earn an affiliate commission when you visit our partners.
Course image
Pragmatic Code School

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.

Read more

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

  • 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

  • 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

    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).

    Enroll now

    Here's a deal for you

    We found an offer that may be relevant to this course.
    Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

    What's inside

    Learning objectives

    • What problems reactive programming is trying to solve ?
    • What is reactive programming?
    • Reactive programming using project reactor
    • Learn to write reactive programming code with db
    • Learn to write reactive programming with spring
    • Build a reactive api from scratch
    • Learn to build non-blocking clients using webclient
    • Write end to end automated test cases using junit for the reactive api

    Syllabus

    Getting Started with the Course
    Course Introduction
    Prerequisites
    Source Code and Course Slides for this Course
    Read more

    This lecture has the final version of the source code attached and the GitHub URL is also linked.

    This lecture contains the course slides thats used in this course.

    In this section, I will introduce you to reactive programming and its related concepts.

    In this lecture, I will explain the traditional programming models, blocking APIs, and Spring MVC architecture which leads to the need for "Reactive Programming".

    In this lecture, I will explain the techniques to combine Asynchronous APIs and drawbacks of Spring MVC architecture

    In this lecture, I will explain about Reactive Programming, and the concepts related to Reactive Programming.

    In this lecture, I will give an introduction to reactive streams and the history connected to them.

    In this section, I will give an introduction to Spring Webflux and NonBlocking RestFul API.

    In this lecture, I will give you an introduction to non-blocking restful API and Spring WebFlux

    In this section, I will introduce you to the reactive library project reactor, and the reactive types Flux and Mono that forms the foundation for Project Reactor

    In this lecture, I will give you all an introduction to Project Reactor, and the different modules that are part of Project Reactor.

    In this lecture, I will explain about the Reactive Types "Flux" and "Mono" that's part of project reactor

    In this section, I will show how to set up the base project that will be used for the rest of this course.

    In this lecture, we will set up the base project for the course that we will be using for the rest of this course

    In this section, we will explore Flux and Mono via code and techniques to write test cases using JUnit5

    In this lecture, I will code and explain how to create a "Flux" and read the data from the flux.

    In this lecture, I will code and explain how to create a "Mono" and read the data from the flux.

    In this lecture, I will demonstrate how to look into the events that are happening between the publisher and subscriber behind the scenes.

    In this lecture, I will code and explain how to write test cases to test the behavior of Flux

    In this lecture, I will give you an introduction to why Transforming the data from its original form is needed in enterprise development.

    In this lecture, I will code and explain about the map() operator that's part of Project reactor Library

    In this lecture, I will code and explain about the immutable nature of Reactive Streams using a simple example

    In this lecture, I will code and explain about the filter() operator that's part of Project reactor Library

    In this lecture, I will code and explain the flatmap() operator and explain the differences between the map and flatmap.

    In this lecture, I will code and explain performing asynchronous operations using flatmap() operator and explain the differences between the map() and flatmap().

    In this lecture, I will code and explain the concatmap() operator and explain the differences between flatmap and concatmap.

    In this lecture, I will code and explain about using the flatMap operator in Mono.

    In this lecture, I will code and explain the flatMapMany operator in Mono.

    In this lecture, I will code and explain the transform operator.

    In this lecture, I will code and explain the switchIfEmpty() and defaultIfEmpty() operators and the differences between them.

    In this lecture, I will give you all an introduction to combining reactive streams and the need for them in today's software development.

    In this lecture, I will code and explain the techniques of combining Publishers using the concat and concatWith operator.

    In this lecture, I will code and explain about combining Publishers using the merge and mergeWith operator.

    In this lecture, I will code and explain about combining Publishers using the mergeSequential operator.

    In this lecture, I will code and explain about combining Publishers using the zip and zipWith operators.

    In this section, I will introduce you to the app that we are going to build and the options that are available to building nonblocking apis using spring webflux

    In this lecture, I will introduce you to the options that are available when it comes to building nonblocking APIs using spring webflux.

    In this lecture, I will give a quick overview of the application that we are going to build as part of this course

    In this section we will set up the base project for the MoviesInfoService

    In this lecture, we will set up the base project for MovieInfo Service

    In this lecture, I will code and explain about building a simple non blocking API that returns a Flux using Annotated Controller approach

    In this lecture, I will code and explain about building a simple non blocking API that returns a Mono using Annotated Controller approach

    In this lecture, I will code and explain about building streaming endpoints using Spring Webflux

    In this section, I will give you an introduction to writing Automated tests using JUnit5

    In this lecture, I will give a general introduction to Automated tests

    In this lecture, we will code and explore the technique to write a Unit test for the Controller Layer

    In this lecture, we will code and explore different techniques to write a Unit test for the Controller Layer and assert on the Response body

    In this lecture, we will code and learn about the technique to write a Unit Test for the endpoint that returns a Mono

    In this lecture, we will code and explore the technique to write a Unit test for the SSE endpoint

    In this section, We will configure the Mongo Db in the MovieInfoService and write some test code to interact with MongoDB using the MovieInfoRepository

    In this lecture, I will set up the movieinfo domain that's needed for the MoviesInfoService

    In this lecture, we will create the MovieInfoRepository interface and add the necessary annotation to mark the movieinfo domain as a MongoDB document

    In this lecture, we will set up the mongo DB server config details using the application.yml file

    In this lecture, we will set up the Integration test for testing the MovieInfo Entity

    In this lecture, we will write the integration test for finding all the Documents in the Mongo Db

    In this lecture, we will write the integration test for finding a single Document in the Mongo Db

    In this lecture, we will write the integration test for updating an existing Document in the Mongo Db.

    In this lecture, we will write the integration test for deleting a single Document in the Mongo Db

    In this section, we will build the movies info service using the annotated controller approach

    In this lecture, we will build an endpoint to create a movieinfo resource in the Database

    In this lecture, we will write the integration test for the POST endpoint to create a new MovieInfo

    In this lecture, we will build an endpoint to get all the movieinfos that's available present in the DB

    In this lecture, we will build an GET endpoint to retrieve a MovieInfo by Id

    In this lecture, we will build a PUT endpoint to update a MovieInfo resource that already exists.

    In this lecture, we will write the integration test for the DELETE endpoint to to remove an existing MovieInfo

    Write an Integration Test for Delete Endpoint
    In this section, I will explain about the importance of Unit tests and write unit tests for the MovieInfoController.

    In this lecture, we will code and set up the base class for Unit Testing the MovieInfoController.

    In this lecture, we will code and learn how to write the unit test for the getAllMovies Endpoint

    Unit Test for getMovieInfoById

    In this lecture, we will code and learn how to write the unit test for the createMovieInfo Endpoint

    In this lecture, we will code and learn how to write the unit test for the updateMovieInfo Endpoint

    Assignment : Unit Test for Delete Movie Info
    In this lecture, we will explore bean validations on the HttpRequest and handle them gracefully in Spring WebFlux.

    In this lecture, we will code and learn about how to implement the bean validations using the Validator module in Spring Ecosystem

    In this lecture, we will code and learn about how to customize the error handling and provide a meaningful error message to the client using ControllerAdvice

    In this lecture, we will code and learn about how to implement the bean validations for the cast field which is a list using the Validator module in Spring Ecosystem

    In this section , I will code and demonstrate the need for using ResponseEntity in Spring Webflux

    In this lecture, I will explain about the need for using response entity in the nonblocking APIs

    In this lecture, we will code and explore how to handle the update operation for a record that does not exist in the DB and provide appropriate response status

    Implement 404 Response for the getMovieInfoById Endpoint
    In this section, we will learn about how to write custom queries using ReactiveMongoRepository

    In this lecture, we will learn about the technique to write custom queries using ReactiveMongoRepository

    In this lecture, we will code and learn how to pass a RequestParam to an endpoint in Spring WebFlux

    Build a Custom Repository function to retrieve MovieInfo by name
    In this section we will learn about how Spring WebFlux handles the request in a non blocking fashion

    In this lecture we will look in to the threading model of how Netty handles request.

    In this lecture, I will explain about the internals of how netty works.

    In this section, I will give a quick introduction to functional web module in Spring WebFlux and built a simple RestFul API.

    In this lecture, I will give an introduction to Functional Web module in Spring Webflux.

    In this lecture, we will build a simple RestFul Endpoint using the Functional Web Module

    In this section, we will build the MoviesReview Service CRUD endpoints using Functional Web module in Spring WebFlux

    In this lecture, we will set up the repository class for the Review Document

    Good to know

    Know what's good
    , what to watch for
    , and possible dealbreakers
    Develops knowledge and skills highly relevant in a programming environment
    Develops foundational skills and knowledge
    Provides a comprehensive study of Reactive Programming
    Covers unique perspectives and approaches to Reactive Programming and APIs
    Requires learners come in with programming background

    Save this course

    Save Build Reactive MicroServices using Spring WebFlux/SpringBoot to your list so you can find it easily later:
    Save

    Reviews summary

    Well-structured beginner course

    Learners say this beginner-friendly course offers easy-to-understand lectures and engaging examples. The course is well-structured, making it simple to follow along. Students appreciate Sal Jade as an experienced and knowledgeable instructor who teaches from the heart. Overall, learners highly recommend this course for those interested in learning about microServices. Reviews were largely positive with some learners wanting more advanced content in the future.
    Well-structured course with bite-sized lessons and clear organization.
    "I like the way the course is set up. I've found the topics easy to remember so far"
    "I like the segmented nature of Sal’s approach; bite size nuggets of information."
    "She speaks clearly and offers great insight to the new learner, like me. As a former educator I appreciate the reference to Bloom’s Taxonomy which clearly underpins her style of delivery."
    Course is well organized with easy-to-understand content suitable for beginners.
    "good easy to understand"
    "easy to understand and lots of examples"
    "It was great course for beginners. simple to follow"
    Instructor Sal Jade is knowledgeable and passionate about the subject matter.
    "Very insightful. Feel like really learning the overarching meaning of the cards well and will be able to use on tarot readings for myself and others. love the pace."
    "Sal's background as a teacher really shows in the way she structures her courses and in the way she produces the content."
    "She makes the material engaging and easy to understand. She really knows her stuff and is a great resource for mastering the tarot!"
    Some learners desire more advanced material in addition to the beginner-level content.
    "The course is good, profound knowledge. I hope it gets more advance when I follow with the rest."

    Activities

    Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Build Reactive MicroServices using Spring WebFlux/SpringBoot with these activities:
    Review Reactive Programming
    Reinforce and Refresh your understanding of the fundamentals of Reactive Programming to better succeed in this course.
    Browse courses on Reactive Programming
    Show steps
    • Review the concepts of Reactive Programming, such as publishers, subscribers, and observables.
    • Practice creating and consuming reactive streams using Project Reactor.
    Join a Reactive Programming Study Group
    Connect with fellow learners and enhance your understanding through collaborative discussions.
    Show steps
    • Find or create a study group focused on Reactive Programming.
    • Regularly meet with the group to discuss course materials, share insights, and work on projects together.
    Follow Spring WebFlux Tutorials
    Enhance your understanding of the practical implementation of Spring WebFlux by following guided tutorials.
    Show steps
    • Find and follow online tutorials that provide step-by-step guidance on building Reactive APIs using Spring WebFlux.
    • Implement the concepts learned in the tutorials to build your own simple Reactive API.
    Two other activities
    Expand to see all activities and additional details
    Show all five activities
    Reactive Programming Exercises
    Solidify your understanding of Reactive Programming by solving exercises and challenges.
    Show steps
    • Find online resources or purchase books that provide exercises and challenges on Reactive Programming.
    • Attempt to solve the exercises and challenges on your own.
    • Review and analyze the solutions to identify areas for improvement.
    Attend a Reactive Programming Workshop
    Deepen your understanding of Reactive Programming by attending a workshop led by experts.
    Show steps
    • Research and find a reputable workshop on Reactive Programming.
    • Register and attend the workshop.
    • Actively participate in the workshop and engage with the instructors and attendees.

    Career center

    Learners who complete Build Reactive MicroServices using Spring WebFlux/SpringBoot will develop knowledge and skills that may be useful to these careers:
    Full-Stack Developer
    Full-Stack Developers are responsible for developing both the front end and back end of an application. This course may be useful for a Full-Stack Developer as it teaches the learner how to build a reactive API using Spring WebFlux and how to make it interact with a database.
    Database Administrator
    Database Administrators are responsible for managing and maintaining databases. This course may be useful for a Database Administrator as it teaches the learner how to perform reactive programming with databases.
    Software Engineer
    A Software Engineer applies engineering principles when it comes to designing, developing, deploying and maintaining applications and software. This course may be useful to a Software Engineer as it teaches the learner how to apply reactive programming to software.
    Back-End Developer
    Back-End Developers are responsible for developing the server-side of an application, including the databases, middleware, and APIs. This course may be useful for a Back-End Developer as it teaches the learner how to code and implement a reactive API using Spring WebFlux.
    Web Developer
    Web Developers are responsible for developing and maintaining websites and web applications. This course may be useful for a Web Developer as it teaches the learner the basics of reactive programming and how to apply it to web development.
    Cloud Engineer
    Cloud Engineers are responsible for designing, building, and maintaining cloud-based applications and infrastructure. This course may be useful for a Cloud Engineer as it teaches the learner the fundamentals of reactive programming and how to apply it to cloud computing.
    Data Scientist
    Data Scientists are responsible for collecting, analyzing, and interpreting data to help businesses make informed decisions. This course may be useful for a Data Scientist as it teaches the learner the basics of reactive programming and how to apply it to data science.
    DevOps Engineer
    DevOps Engineers are responsible for bridging the gap between development and operations teams. This course may be useful for a DevOps Engineer as it teaches the learner the fundamentals of reactive programming and how to apply it to DevOps.
    Systems Engineer
    Systems Engineers are responsible for designing, building, and maintaining complex systems. This course may be useful for a Systems Engineer as it teaches the learner the fundamentals of reactive programming and how to apply it to systems engineering.
    Software Architect
    Software Architects are responsible for designing and developing the overall architecture of software systems. This course may be useful for a Software Architect as it teaches the learner the fundamentals of reactive programming and how to apply it to software architecture.
    Technical Lead
    Technical Leads are responsible for leading and mentoring technical teams. This course may be useful for a Technical Lead as it teaches the learner the fundamentals of reactive programming and how to apply it to leading technical teams.
    Software Project Manager
    Software Project Managers are responsible for planning, organizing, and managing software development projects. This course may be useful for a Software Project Manager as it teaches the learner the fundamentals of reactive programming and how to apply it to software project management.
    Business Analyst
    Business Analysts are responsible for analyzing and documenting business requirements and translating them into technical specifications. This course may be useful for a Business Analyst as it teaches the learner the fundamentals of reactive programming and how to apply it to business analysis.
    Product Manager
    Product Managers are responsible for managing the development and launch of new products. This course may be useful for a Product Manager as it teaches the learner the fundamentals of reactive programming and how to apply it to product management.
    Front-End Developer
    Front-End Developers are responsible for developing the user interface (UI) and ensuring it interacts properly with the back-end of an application. This course may help build a foundation for a Front-End Developer as it teaches the learner the fundamentals of reactive programming and how to set up a project for it.

    Reading list

    We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Build Reactive MicroServices using Spring WebFlux/SpringBoot.
    Provides a comprehensive overview of reactive programming using RxJava, a popular reactive programming library for Java. good starting point for those new to reactive programming.
    An introduction to reactive programming and how to apply it in Java applications. good resource for developers who want to learn the fundamentals of reactive programming.
    A comprehensive guide to the Spring Framework, including the latest version 5.0. covers all aspects of Spring, including web development, data access, and testing.
    A concise guide to building reactive web applications using Spring WebFlux. good starting point for those who want to learn the basics of Spring WebFlux.
    A comprehensive guide to MongoDB, a popular NoSQL database. good resource for developers who want to learn how to use MongoDB in their applications.
    A guide to Netty, a popular networking framework for Java. good resource for developers who want to learn how to use Netty in their applications.
    A guide to high-performance Java persistence. good resource for developers who want to learn how to optimize their Java applications for performance.

    Share

    Help others find this course page by sharing it with your friends and followers:

    Similar courses

    Here are nine courses similar to Build Reactive MicroServices using Spring WebFlux/SpringBoot.
    Our mission

    OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

    Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

    Find this site helpful? Tell a friend about us.

    Affiliate disclosure

    We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

    Your purchases help us maintain our catalog and keep our servers humming without ads.

    Thank you for supporting OpenCourser.

    © 2016 - 2024 OpenCourser