Part 1. Foundational Spring
1.1 What is Spring?
1.2 Initializing a Spring application
Initializing a Spring project with Spring Tool Suite
Examining the Spring project structure
1.3 Writing a Spring application
Building and running the application
Getting to know Spring Boot DevTools
1.4 Surveying the Spring landscape
Spring Integration and Spring Batch
2.2 Processing form submission
Performing validation at form binding
2.4 Working with view controllers
2.5 Choosing a view template library
3.1 Reading and writing data with JDBC
Adapting the domain for persistence
Defining a schema and preloading data
3.2 Working with Spring Data JDBC
Adding Spring Data JDBC to the build
Defining repository interfaces
Annotating the domain for persistence
Preloading data with CommandLineRunner
3.3 Persisting data with Spring Data JPA
Adding Spring Data JPA to the project
Annotating the domain as entities
4 Working with nonrelational data
4.1 Working with Cassandra repositories
Enabling Spring Data Cassandra
Understanding Cassandra data modeling
Mapping domain types for Cassandra persistence
Writing Cassandra repositories
4.2 Writing MongoDB repositories
Mapping domain types to documents
Writing MongoDB repository interfaces
5.2 Configuring authentication
In-memory user details service
Customizing user authentication
Enabling third-party authentication
Preventing cross-site request forgery
5.4 Applying method-level security
6 Working with configuration properties
6.1 Fine-tuning autoconfiguration
Understanding Spring’s environment abstraction
Configuring the embedded server
6.2 Creating your own configuration properties
Defining configuration property holders
Declaring configuration property metadata
Defining profile-specific properties
Conditionally creating beans with profiles
Part 2. Integrated Spring
7.1 Writing RESTful controllers
Retrieving data from the server
7.2 Enabling data-backed services
Adjusting resource paths and relation names
8.2 Creating an authorization server
8.3 Securing an API with a resource server
9 Sending messages asynchronously
Sending messages with JmsTemplate
9.2 Working with RabbitMQ and AMQP
Sending messages with RabbitTemplate
Receiving messages from RabbitMQ
Setting up Spring for Kafka messaging
Sending messages with KafkaTemplate
10.1 Declaring a simple integration flow
Defining integration flows with XML
Configuring integration flows in Java
Using Spring Integration’s DSL configuration
10.2 Surveying the Spring Integration landscape
10.3 Creating an email integration flow
Part 3. Reactive Spring
11.1 Understanding reactive programming
11.2 Getting started with Reactor
11.3 Applying common reactive operations
Transforming and filtering reactive streams
Performing logic operations on reactive types
12.1 Working with Spring WebFlux
12.2 Defining functional request handlers
12.3 Testing reactive controllers
12.4 Consuming REST APIs reactively
12.5 Securing reactive web APIs
Configuring reactive web security
Configuring a reactive user details service
13.1 Working with R2DBC
Defining domain entities for R2DBC
Defining reactive repositories
Defining an OrderRepository aggregate root service
13.2 Persisting document data reactively with MongoDB
Defining domain document types
Defining reactive MongoDB repositories
Testing reactive MongoDB repositories
13.3 Reactively persisting data in Cassandra
Defining domain classes for Cassandra persistence
Creating reactive Cassandra repositories
Testing reactive Cassandra repositories
14.1 Introducing RSocket
14.2 Creating a simple RSocket server and client
Handling request-stream messaging
Sending fire-and-forget messages
Sending messages bidirectionally
14.3 Transporting RSocket over WebSocket
Part 4. Deployed Spring
15 Working with Spring Boot Actuator
15.1 Introducing Actuator
Configuring Actuator’s base path
Enabling and disabling Actuator endpoints
15.2 Consuming Actuator endpoints
Fetching essential application information
15.3 Customizing Actuator
Contributing information to the /info endpoint
Defining custom health indicators
15.4 Securing Actuator
16.2 Exploring the Admin server
Viewing general application health and information
Examining environment properties
Viewing and setting logging levels
16.3 Securing the Admin server
Enabling login in the Admin server
Authenticating with the Actuator
17.1 Working with Actuator MBeans
18.1 Weighing deployment options
18.2 Building executable JAR files
18.3 Building container images
Working with application liveness and readiness
18.4 Building and deploying WAR files
18.5 The end is where we begin
Appendix. Bootstrapping Spring applications