contents

Front matter

preface

acknowledgments

about this book

about the author

about the cover illustration

  

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

Let’s review

  1.4  Surveying the Spring landscape

The core Spring Framework

Spring Boot

Spring Data

Spring Security

Spring Integration and Spring Batch

Spring Cloud

Spring Native

  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

Caching templates

  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  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

Declaring JPA repositories

Customizing repositories

  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

Enabling Spring Data MongoDB

Mapping domain types to documents

Writing MongoDB repository interfaces

  5 Securing Spring

  5.1  Enabling Spring Security

  5.2  Configuring authentication

In-memory user details service

Customizing user authentication

  5.3  Securing web requests

Securing requests

Creating a custom login page

Enabling third-party authentication

Preventing cross-site request forgery

  5.4  Applying method-level security

  5.5  Knowing your user

  6 Working with configuration properties

  6.1  Fine-tuning autoconfiguration

Understanding Spring’s environment abstraction

Configuring a data source

Configuring the embedded server

Configuring logging

Using special property values

  6.2  Creating your own configuration properties

Defining configuration property holders

Declaring configuration property metadata

  6.3  Configuring with profiles

Defining profile-specific properties

Activating profiles

Conditionally creating beans with profiles

Part 2. Integrated Spring

  7 Creating REST services

  7.1  Writing RESTful controllers

Retrieving data from the server

Sending data to the server

Updating data on the server

Deleting data from the server

  7.2  Enabling data-backed services

Adjusting resource paths and relation names

Paging and sorting

  7.3  Consuming REST services

GETting resources

PUTting resources

DELETEing resources

POSTing resource data

  8 Securing REST

  8.1  Introducing OAuth 2

  8.2  Creating an authorization server

  8.3  Securing an API with a resource server

  8.4  Developing the client

  9 Sending messages asynchronously

  9.1  Sending messages with JMS

Setting up JMS

Sending messages with JmsTemplate

Receiving JMS messages

  9.2  Working with RabbitMQ and AMQP

Adding RabbitMQ to Spring

Sending messages with RabbitTemplate

Receiving messages from RabbitMQ

  9.3  Messaging with Kafka

Setting up Spring for Kafka messaging

Sending messages with KafkaTemplate

Writing Kafka listeners

10 Integrating Spring

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

Message channels

Filters

Transformers

Routers

Splitters

Service activators

Gateways

Channel adapters

Endpoint modules

10.3  Creating an email integration flow

Part 3. Reactive Spring

11 Introducing Reactor

11.1  Understanding reactive programming

Defining Reactive Streams

11.2  Getting started with Reactor

Diagramming reactive flows

Adding Reactor dependencies

11.3  Applying common reactive operations

Creating reactive types

Combining reactive types

Transforming and filtering reactive streams

Performing logic operations on reactive types

12 Developing reactive APIs

12.1  Working with Spring WebFlux

Introducing Spring WebFlux

Writing reactive controllers

12.2  Defining functional request handlers

12.3  Testing reactive controllers

Testing GET requests

Testing POST requests

Testing with a live server

12.4  Consuming REST APIs reactively

GETting resources

Sending resources

Deleting resources

Handling errors

Exchanging requests

12.5  Securing reactive web APIs

Configuring reactive web security

Configuring a reactive user details service

13 Persisting data reactively

13.1  Working with R2DBC

Defining domain entities for R2DBC

Defining reactive repositories

Testing R2DBC 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 Working with RSocket

14.1  Introducing RSocket

14.2  Creating a simple RSocket server and client

Working with request-response

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

Viewing configuration details

Viewing application activity

Tapping runtime metrics

15.3  Customizing Actuator

Contributing information to the /info endpoint

Defining custom health indicators

Registering custom metrics

Creating custom endpoints

15.4  Securing Actuator

16 Administering Spring

16.1  Using Spring Boot Admin

Creating an Admin server

Registering Admin clients

16.2  Exploring the Admin server

Viewing general application health and information

Watching key metrics

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 Monitoring Spring with JMX

17.1  Working with Actuator MBeans

17.2  Creating your own MBeans

17.3  Sending notifications

18 Deploying Spring

18.1  Weighing deployment options

18.2  Building executable JAR files

18.3  Building container images

Deploying to Kubernetes

Enabling graceful shutdown

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

  

index

  

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset