Why is Spring doing this?

Spring MVC is built on top of Java EE's Servlet spec. This specification is inherently blocking and synchronous. Asynchronous support has been added in later versions, but servlets can still hold up threads in the pool while waiting for responses, defying our need for non-blocking. To build a reactive stack, things need to be reactive from top to bottom, and this requires new contracts and expectations.

Certain things, like HTTP status codes, a ResponseBody, and the @GetMapping/@PostMapping/@DeleteMapping/@PutMapping annotations are used by both modules. But other things under the hood must be rewritten from scratch. The important point is that this doesn't impact the end developer.

By switching to Reactive Spring, ...

Get Learning Spring Boot 2.0 - Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.