PART 1 FOUNDATIONAL SPRING
1 Getting started with 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
Handling web requests
Defining the view
Testing the controller
Building and running the application
Getting to know Spring Boot DevTools
1.4 Surveying the Spring landscape
The core Spring Framework
Spring Boot
Spring Data
Spring Security
Spring Integration and Spring Batch
Spring Cloud
2 Developing web applications
2.1 Displaying information
Establishing the domain
Creating a controller class
Designing the view
2.2 Processing form submission
2.3 Validating form input
Declaring validation rules
Performing validation at form binding
Displaying validation errors
2.4 Working with view controllers
2.5 Choosing a view template library
3 Working with data
3.1 Reading and writing data with JDBC
Adapting the domain for persistence
Working with JdbcTemplate
Defining a schema and preloading data
Inserting data
3.2 Persisting data with Spring Data JPA
Adding Spring Data JPA to the project
Annotating the domain as entities
Declaring JPA repositories
Customizing JPA repositories
4 Securing Spring
4.1 Enabling Spring Security
4.2 Configuring Spring Security
In-memory user store
JDBC-based user store
LDAP-backed user store
Customizing user authentication
4.3 Securing web requests
Securing requests
Creating a custom login page
Logging out
Preventing cross-site request forgery
4.4 Knowing your user
5 Working with configuration properties
Understanding Spring’s environment abstraction
Configuring a data source
Configuring the embedded server
Configuring logging
Using special property values
5.2 Creating your own configuration properties
Defining configuration properties holders
Declaring configuration property metadata
5.3 Configuring with profiles
Defining profile-specific properties
Activating profiles
Conditionally creating beans with profiles
PART 2 INTEGRATED SPRING
6 Creating REST services
6.1 Writing RESTful controllers
Retrieving data from the server
Sending data to the server
Updating data on the server
Deleting data from the server
6.2 Enabling hypermedia
Adding hyperlinks
Creating resource assemblers
Naming embedded relationships
6.3 Enabling data-backed services
Adjusting resource paths and relation names
Paging and sorting
Adding custom endpoints
Adding custom hyperlinks to Spring Data endpoints
7 Consuming REST services
7.1 Consuming REST endpoints with RestTemplate
GETting resources
PUTting resources
DELETEing resources
POSTing resource data
7.2 Navigating REST APIs with Traverson
8 Sending messages asynchronously
8.1 Sending messages with JMS
Setting up JMS
Sending messages with JmsTemplate
Receiving JMS messages
8.2 Working with RabbitMQ and AMQP
Adding RabbitMQ to Spring
Sending messages with RabbitTemplate
Receiving message from RabbitMQ
8.3 Messaging with Kafka
Setting up Spring for Kafka messaging
Sending messages with KafkaTemplate
Writing Kafka listeners
9 Integrating Spring
9.1 Declaring a simple integration flow
Defining integration flows with XML
Configuring integration flows in Java
Using Spring Integration’s DSL configuration
9.2 Surveying the Spring Integration landscape
Message channels
Filters
Transformers
Routers
Splitters
Service activators
Gateways
Channel adapters
Endpoint modules
9.3 Creating an email integration flow
PART 3 REACTIVE SPRING
10 Introducing Reactor
10.1 Understanding reactive programming
Defining Reactive Streams
10.2 Getting started with Reactor
Diagramming reactive flows
Adding Reactor dependencies
10.3 Applying common reactive operations
Creating reactive types
Combining reactive types
Transforming and filtering reactive streams
Performing logic operations on reactive types
11 Developing reactive APIs
11.1 Working with Spring WebFlux
Introducing Spring WebFlux
Writing reactive controllers
11.2 Defining functional request handlers
11.3 Testing reactive controllers
Testing GET requests
Testing POST requests
Testing with a live server
11.4 Consuming REST APIs reactively
GETting resources
Sending resources
Deleting resources
Handling errors
Exchanging requests
11.5 Securing reactive web APIs
Configuring reactive web security
Configuring a reactive user details service
12 Persisting data reactively
12.1 Understanding Spring Data’s reactive story
Spring Data reactive distilled
Converting between reactive and non-reactive types
Developing reactive repositories
12.2 Working with reactive Cassandra repositories
Enabling Spring Data Cassandra
Understanding Cassandra data modeling
Mapping domain types for Cassandra persistence
Writing reactive Cassandra repositories
12.3 Writing reactive MongoDB repositories
Enabling Spring Data MongoDB
Mapping domain types to documents
Writing reactive MongoDB repository interfaces
PART 4 CLOUD-NATIVE SPRING
13 Discovering services
13.1 Thinking in microservices
13.2 Setting up a service registry
Configuring Eureka
Scaling Eureka
13.3 Registering and discovering services
Configuring Eureka client properties
Consuming services
14 Managing configuration
14.1 Sharing configuration
14.2 Running Config Server
Enabling Config Server
Populating the configuration repository
14.3 Consuming shared configuration
14.4 Serving application- and profile-specific properties
Serving application-specific properties
Serving properties from profiles
14.5 Keeping configuration properties secret
Encrypting properties in Git
Storing secrets in Vault
14.6 Refreshing configuration properties on the fly
Manually refreshing configuration properties
Automatically refreshing configuration properties
15 Handling failure and latency
15.1 Understanding circuit breakers
15.2 Declaring circuit breakers
Mitigating latency
Managing circuit breaker thresholds
15.3 Monitoring failures
Introducing the Hystrix dashboard
Understanding Hystrix thread pools
15.4 Aggregating multiple Hystrix streams
PART 5 DEPLOYED SPRING
16 Working with Spring Boot Actuator
16.1 Introducing Actuator
Configuring Actuator’s base path
Enabling and disabling Actuator endpoints
16.2 Consuming Actuator endpoints
Fetching essential application information
Viewing configuration details
Viewing application activity
Tapping runtime metrics
16.3 Customizing Actuator
Contributing information to the /info endpoint
Defining custom health indicators
Registering custom metrics
Creating custom endpoints
16.4 Securing Actuator
17 Administering Spring
17.1 Using the Spring Boot Admin
Creating an Admin server
Registering Admin clients
17.2 Exploring the Admin server
Viewing general application health and information
Watching key metrics
Examining environment properties
Viewing and setting logging levels
Monitoring threads
Tracing HTTP requests
17.3 Securing the Admin server
Enabling login in the Admin server
Authenticating with the Actuator
18 Monitoring Spring with JMX
18.1 Working with Actuator MBeans
18.2 Creating your own MBeans
18.3 Sending notifications
19 Deploying Spring
19.1 Weighing deployment options
19.2 Building and deploying WAR files
19.3 Pushing JAR files to Cloud Foundry
19.4 Running Spring Boot in a Docker container
19.5 The end is where we begin