Preface What this book covers What you need for this book Who this book is for Conventions Reader feedback Customer support Downloading the example code Downloading the color images of this book Errata Piracy Questions Quick Start with Java Getting started Spring Boot starters Running a Spring Boot application Delving into Spring Boot's property support Bundling up the application as a runnable JAR file Deploying to Cloud Foundry Adding production-ready support Pinging our app for general health Metrics Summary Reactive Web with Spring Boot Creating a reactive web application with Spring Initializr Learning the tenets of reactive programming Introducing Reactor types Switching from Embedded Netty to Apache Tomcat Comparing reactive Spring WebFlux against classic Spring MVC Why is Spring doing this? Showing some Mono/Flux-based endpoints Creating a reactive ImageService Creating a reactive file controller Why use reactive programming? Interacting with a Thymeleaf template Illustrating how going from async to sync can be easy, but the opposite is not Summary Reactive Data Access with Spring Boot Getting underway with a reactive data store Solving a problem Wiring up Spring Data repositories with Spring Boot Creating a reactive repository Pulling data through a Mono/Flux and chain of operations Creating custom finders Querying by example Querying with MongoOperations Logging reactive operations Summary Testing with Spring Boot Test dependencies Unit testing Slice-based testing Testing with embedded MongoDB Testing with a real MongoDB database Testing WebFlux controllers Fully embedded Spring Boot app tests Testing your custom Spring Boot autoconfiguration Summary Developer Tools for Spring Boot Apps Using Spring Boot's DevTools for hot code reloading Using Spring Boot's autoconfiguration report Making local changes and seeing them on the target system Writing a custom health check Adding build data to /application/info Creating custom metrics Working with additional Actuator endpoints Summary AMQP Messaging with Spring Boot Getting started with RabbitMQ Installing RabbitMQ broker Launching the RabbitMQ broker Adding messaging as a new component to an existing application Creating a message producer/message consumer Displaying comments Producing comments AMQP fundamentals Adding customized metrics to track message flow Peeking at Spring Cloud Stream (with RabbitMQ) Introduction to Spring Cloud Logging with Spring Cloud Stream Summary Microservices with Spring Boot A quick primer on microservices Dynamically registering and finding services with Eureka Introducing @SpringCloudApplication Calling one microservice from another with client-side load balancing Implementing microservice circuit breakers Monitoring circuits Offloading microservice settings to a configuration server Summary WebSockets with Spring Boot Publishing saved comments to a chat service Creating a chat service to handle WebSocket traffic Brokering WebSocket messages Broadcasting saved comments Configuring WebSocket handlers Consuming WebSocket messages from the web page Moving to a fully asynchronous web client Handling AJAX calls on the server Introducing user chatting Sending user-specific messages Registering users without authentication Linking a user to a session Sending user-to-user messages Checking out the final product JSR 356 versus Spring WebFlux messaging Summary Securing Your App with Spring Boot Securing a Spring Boot application Using Spring Session Creating a Gateway API Securing the chat microservice Authentication versus authorization Sharing session details with other microservices Securing the images microservice Wiring in image ownership Authorizing methods Tailoring the UI with authorization checks Securing WebSockets Tracing calls Securing the Config Server Securing the Eureka Server Summary Taking Your App to Production with Spring Boot Profile-based sets of beans Creating configuration property beans Overriding property settings in production @ConfigurationProperties versus @Value Pushing app to Cloud Foundry and adjusting the settings Summary