This document provides an overview of reactive programming with Spring. It begins by contrasting imperative programming, which uses statements to change program state, with declarative programming, which expresses logic without control flow details. It then defines reactive programming as a subset of asynchronous programming where availability of new information drives logic forward in a non-blocking fashion. The document discusses the reactive manifesto and how reactive streams and Spring support reactive programming through interfaces like Publisher/Subscriber and implementations like Project Reactor's Flux and Mono types as well as Spring WebFlux. It concludes with a promise of a demo comparing traditional Spring MVC to the new reactive Spring WebFlux.