1.History and justificationThis chapter introduces Spring, and rather surprisingly explains Spring's history and justification, largely as a logical response to overengineered and difficult-to-configure J2EE applications, as well as Spring's eventual participation in the JCP via the CDI specification. Along the way we'll explain some of the architectural models that opened the door to Spring's development and deployment paradigms.2.Hello, worldThis is a simple application that displays "Hello, World" on a terminal - along with demonstrating the build lifecycle, configuration, testing, and other such processes. The application is purposefully simple and overengineered beyond reason, but to demonstrate how one can know that an application works; it also introduces tooling and processes. The second part of the chapter will exaggerate the features of the simple "Hello World" and demonstrate some of the power of Spring - by using the simple template and expanding functionality far beyond simply saying "Hello, World" without changing the basic structure of the application.3.Configuration and declaration of beansThis chapter explores various configuration options for declaring Spring beans and dependencies, in source code and external configuration, and covers many of the more common options one might use (and why they might be relevant.)4.LifecycleThis chapter completes the configuration information, going into what happens and when in the lifecycle of a Spring application context and the beans it uses. Here, readers will see a lot more about how Spring affects and empowers their actual development process, while offering fine-grained control of when and how component services are controlled.5.Spring and Java EEThis chapter deploys our Spring application - now a module - into a Java EE application server, allowing access to container services while retaining Spring's ease of configuration and testing.6.Spring WebIn the previous chapter we used Spring components in a web application; in this chapter we demonstrate using Spring to actually process the web requests directly, as opposed to delegating to Spring components from traditional Java EE entry points.7.Spring ReactiveMost programming is fairly proactive - even when programs are event-driven, programs manhandle their input through an entire chain of processes to create a result. Reactive programming reduces programming to a set of simple inputs and outputs, which yields high scalability and simple modular coding. Spring has a project for exactly this purpose.8.Persistence with Spring and Spring DataThis chapter introduces Spring's interactions with various persistence mechanisms, such as JDBC, JDBI, and JPA (including Hibernate), and segues into Spring Data, a module that provides abstract and convenient access to the concept of a data repository.9.Spring BootThis chapter introduces Spring Boot, a framework designed to help design and deploy applications that don't require an explicit Java EE container. With Spring Boot, one doesn't create a Java EE component with a separate deployment and configuration step; with Boot, one writes an application and deploys and configures it directly.10.Spring CloudA distributed environment has common patterns and this chapter dives in depth into the offering within Spring Cloud. You'll learn how to use features such as configuration management, service registration and discovery, routing, deployment into various cloud platforms, and much more.