Book Image

Hands-On Reactive Programming in Spring 5

By : Oleh Dokuka, Igor Lozynskyi
Book Image

Hands-On Reactive Programming in Spring 5

By: Oleh Dokuka, Igor Lozynskyi

Overview of this book

These days, businesses need a new type of system that can remain responsive at all times. This is achievable with reactive programming; however, the development of these kinds of systems is a complex task, requiring a deep understanding of the domain. In order to develop highly responsive systems, the developers of the Spring Framework came up with Project Reactor. Hands-On Reactive Programming in Spring 5 begins with the fundamentals of Spring Reactive programming. You’ll explore the endless possibilities of building efficient reactive systems with the Spring 5 Framework along with other tools such as WebFlux and Spring Boot. Further on, you’ll study reactive programming techniques and apply them to databases and cross-server communication. You will advance your skills in scaling up Spring Cloud Streams and run independent, high-performant reactive microservices. By the end of the book, you will be able to put your skills to use and get on board with the reactive revolution in Spring 5.1!
Table of Contents (12 chapters)

Why are reactive streams hard to test?

Nowadays, enterprise applications are enormous. This is why the verification of such systems is a very important stage in any modern development life cycle. However, we should remember that in large systems there are a vast number of components and services, which in turn may include a large number of classes. For this reason, we should follow the Test Pyramid suggestions in order to cover everything. Here, the basic part of system testing is unit testing.

In our case, the subject of the testing is code written using the reactive programming technique. As we discovered in Chapter 3, Reactive Streams - the New Streams' Standard and Chapter 4Project Reactor - the Foundation for Reactive Apps, reactive programming gives us a bunch of benefits. The first of these is the ability to optimize resource usage by enabling asynchronous...