Book Image

Spring 5.0 Cookbook

By : Sherwin John C. Tragura
Book Image

Spring 5.0 Cookbook

By: Sherwin John C. Tragura

Overview of this book

The Spring framework has been the go-to framework for Java developers for quite some time. It enhances modularity, provides more readable code, and enables the developer to focus on developing the application while the underlying framework takes care of transaction APIs, remote APIs, JMX APIs, and JMS APIs. The upcoming version of the Spring Framework has a lot to offer, above and beyond the platform upgrade to Java 9, and this book will show you all you need to know to overcome common to advanced problems you might face. Each recipe will showcase some old and new issues and solutions, right from configuring Spring 5.0 container to testing its components. Most importantly, the book will highlight concurrent processes, asynchronous MVC and reactive programming using Reactor Core APIs. Aside from the core components, this book will also include integration of third-party technologies that are mostly needed in building enterprise applications. By the end of the book, the reader will not only be well versed with the essential concepts of Spring, but will also have mastered its latest features in a solution-oriented manner.
Table of Contents (20 chapters)
Title Page
Credits
About the Author
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface

Creating Mono<T> and Flux<T> HTTP response


The Spring WebFlux paradigm will not be complete without the @Controller returning Mono<T> and Flux<T> stream data.

Getting started

Add in project ch08 a set of request handlers that returns on the client Mono<T> and Flux<T> through @ResponseBody annotation.

How to do it...

After using Reactor Core specification to build the service layer, let us apply Mono<T> and Flux<T> streams to @Controllers by doing these steps:

  1. Open the ServiceController of the previous recipe again and add the following request handler showcasing the use of Reactor Stream operations:
@RequestMapping(value="/web/employeeNames.json",  
produces ="application/json", 
method = RequestMethod.GET,  
headers = {"Accept=text/xml, application/json"}) 
@ResponseBody 
public Callable<List<String>> jsonEmpNames(){ 
      Callable<List<String>> task =  
new Callable<List<String>>() { 
 
         @Override 
...