Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Spring в действии

Покупка
Артикул: 458601.02.99
Это исчерпывающее руководство по основным возможностям Spring, написанное простым и ясным языком. Книга шаг за шагом проведет вас по пути создания законченного веб-приложения на основе базы данных. Новое, 6-е издание охватывает не только основы Spring, но также новые возможности, такие как реактивные потоки или интеграция с Kubernetes и RSocket. Независимо от того, впервые ли вы знакомитесь с фреймворком Spring или переходите на новую версию Spring 5.3, этот классический бестселлер станет вашей настольной книгой. Издание предназначено Java-разработчикам, как уже использующим, так и только начинающим применять в своей работе Spring.
Уоллс, К. Spring в действии : практическое руководство / К. Уоллс ; пер. с англ. А. Н. Киселева. - 6-е изд. - Москва : ДМК Пресс, 2022. - 544 с. - ISBN 978-5-93700-112-2. - Текст : электронный. - URL: https://znanium.com/catalog/product/2110012 (дата обращения: 27.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Крейг Уоллс

Spring в действии
Spring in Action

Sixth Edition

CRAIG WALLS
Spring в действии

6-е издание

КРЕЙГ УОЛЛС

Москва, 2022
УДК 004.432
ББК 32.972.1
У63

Уоллс К.
У63 
Spring в действии. 6-е изд. / пер. с англ. А. Н. Киселева. – М.: ДМК Пресс, 2022. – 
544 с.: ил. 

ISBN 978-5-93700-112-2

Это исчерпывающее руководство по основным возможностям Spring, написанное 
простым и ясным языком. Книга шаг за шагом проведет вас по пути создания законченного 
веб-приложения на основе базы данных. Новое 6-е издание охватывает не 
только основы Spring, но также новые возможности, такие как реактивные потоки или 
интеграция с Kubernetes и RSocket. Независимо от того, впервые ли вы знакомитесь 
с фреймворком Spring или переходите на новую версию Spring 5.3, этот классический 
бестселлер станет вашей настольной книгой.
Издание предназначено Java-разработчикам, как уже использующим, так и только 
начинающии применять в своей работе Spring.

УДК 004.432
ББК 32.972.1

Original English language edition published by Manning Publications USA. Copyright © 2022 by 
Manning Publications. Russian-language edition copyright © 2022 by DMK Press. All rights reserved.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой 
бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев 
авторских прав.

ISBN 978-1-6172-9757-1 (англ.) 
© Manning Publications, 2022
ISBN 978-5-93700-112-2 (рус.) 
© Перевод, оформление, издание, ДМК Пресс, 2022
Оглавление

 Часть I  ОСНОВЫ SPRING .................................................................................24
 
1  Введение в Spring ...................................................................................25
 
2  Разработка веб-приложений .................................................................54
 
3  Работа с данными ...................................................................................88
 
4  Работа с нереляционными данными ..................................................123
 
5  Безопасность в Spring ...........................................................................144
 
6  Работа с конфигурацией ......................................................................173

 Часть II  ИНТЕГРАЦИЯ С ПРИЛОЖЕНИЯМИ SPRING ...............................196
 
7  Создание служб REST ...........................................................................197
 
8  Безопасность REST API .........................................................................222
 
9  Асинхронная передача сообщений .....................................................247
 
10  Интеграция Spring ................................................................................283

 Часть III  РЕАКТИВНЫЙ SPRING .....................................................................317
 
11  Введение в Reactor ................................................................................318
 
12  Разработка реактивных API .................................................................350
 
13  Реактивное хранение данных ..............................................................382
 
14  RSocket ...................................................................................................416

 Часть IV  РАЗВЕРТЫВАНИЕ SPRING ..............................................................433
 
15  Spring Boot Actuator ..............................................................................434
 
16  Администрирование Spring .................................................................472
 
17  Мониторинг Spring с помощью JMX....................................................484
 
18  Развертывание Spring ..........................................................................492
Содержание

Из отзывов к пятому изданию книги Крейга Уоллса «Spring в действии» ........ 13
Предисловие ........................................................................................................ 14
Благодарности .................................................................................................... 15
Об этой книге ..................................................................................................... 17
Об авторе ........................................................................................................... 22
Об иллюстрации на обложке .............................................................................. 23

Часть I 
ОСНОВЫ SPRING ................................................................ 24

1 

Введение в Spring.................................................................................. 25

1.1 
Что такое Spring? .................................................................................... 26

1.2 
Инициализация приложения Spring ..................................................... 29
1.2.1 
Инициализация проекта Spring с помощью Spring Tool Suite .......... 30
1.2.2 
Структура проекта Spring ........................................................... 34

1.3 
Разработка приложения Spring ............................................................. 41
1.3.1 
Обработка веб-запросов ............................................................... 41
1.3.2 
Определение представления ......................................................... 42
1.3.3 
Тестирование контроллера .......................................................... 43
1.3.4 
Сборка и запуск приложения ......................................................... 45
1.3.5 
Spring Boot DevTools ...................................................................... 47
1.3.6 
Обзор результатов ....................................................................... 49

1.4 
Обзор ландшафта Spring ........................................................................ 50
1.4.1 
Ядро Spring Framework .................................................................. 50
1.4.2 
Spring Boot .................................................................................... 51
1.4.3 
Spring Data .................................................................................... 51
1.4.4 
Spring Security ............................................................................... 52
1.4.5 
Spring Integration и Spring Batch ..................................................... 52
1.4.6 
Spring Cloud .................................................................................. 52
1.4.7 
Spring Native ................................................................................. 53

Итоги  ................................................................................................................. 53

2 

Разработка веб-приложений .................................................... 54

2.1 
Отображение информации .................................................................... 55
2.1.1 
Предметная область ингредиентов .............................................. 56
Содержание

2.1.2 
Создание класса контроллера ....................................................... 60
2.1.3 
Создание представления ............................................................... 63

2.2 
Обработка отправленной формы .......................................................... 68

2.3 
Проверка данных в форме ..................................................................... 75
2.3.1 
Объявление правил проверки ......................................................... 76
2.3.2 
Выполнение проверки после привязки ............................................ 79
2.3.3 
Отображение сообщений об ошибках ............................................ 80

2.4 
Работа с контроллерами представлений .............................................. 82

2.5 
Выбор механизма шаблонов для создания представлений ................ 84
2.5.1 
Кеширование шаблонов ................................................................. 85

Итоги  ................................................................................................................. 86

3 

Работа с данными .............................................................................. 88

3.1 
Чтение и запись данных с помощью JDBC ........................................... 89
3.1.1 
Подготовка объектов данных к хранению ..................................... 91
3.1.2 
Использование JdbcTemplate .......................................................... 92
3.1.3 
Определение схемы и предварительная загрузка данных ............... 98
3.1.4 
Сохранение данных ......................................................................101

3.2 
Spring Data JDBC ....................................................................................106
3.2.1 
Добавление Spring Data JDBC в спецификацию сборки ...................107
3.2.2 
Определение интерфейсов репозиториев .....................................107
3.2.3 
Аннотирование классов данных предметной области ..................109
3.2.4 
Предварительная загрузка данных с помощью  
 
CommandLineRunner ....................................................................112

3.3 
Хранение данных с по мощью Spring Data JPA ....................................114
3.3.1 
Добавление зависимости Spring Data JPA .....................................114
3.3.2 
Аннотирование классов данных предметной области ..................115
3.3.3 
Объявление репозиториев JPA ......................................................119
3.3.4 
Специализация репозиториев ......................................................119

Итоги  ................................................................................................................122

4 

Работа с нереляционными данными .................................123

4.1 
Репозитории в Cassandra ......................................................................124
4.1.1 
Включение Spring Data Cassandra .................................................124
4.1.2 
Моделирование данных в Cassandra ..............................................128
4.1.3 
Отображение типов данных предметной области  
 
для хранения в Cassandra .............................................................129
4.1.4 
Определение репозиториев Cassandra ..........................................135

4.2 
Определение репозиториев MongoDB .................................................136
4.2.1 
Включение Spring Data MongoDB ..................................................137
4.2.2 
Отображение типов данных предметной области  
 
в документы ................................................................................138
4.2.3 
Определение репозиториев MongoDB ...........................................141

Итоги  ................................................................................................................143

5 

Безопасность в Spring ....................................................................144

5.1 
Включение Spring Security ....................................................................145

5.2 
Настройка аутентификации .................................................................147
5.2.1 
Служба хранения сведений о пользователях в памяти ..................149
5.2.2 
Настройка аутентификации пользователя .................................150
Содержание

5.3 
Защита веб-запросов ............................................................................157
5.3.1 
Защита запросов .........................................................................157
5.3.2 
Создание страницы входа ............................................................160
5.3.3 
Использование сторонних систем аутентификации ....................163
5.3.4 
Предотвращение подделки межсайтовых запросов ......................166

5.4 
Безопасность на уровне методов .........................................................167

5.5 
Знай своего пользователя .....................................................................169

Итоги  ................................................................................................................172

6 

Работа с конфигурацией ..............................................................173

6.1 
Тонкая настройка автоконфигурации .................................................174
6.1.1 
Абстракция окружения Spring ......................................................175
6.1.2 
Настройка источника данных .....................................................176
6.1.3 
Настройка встроенного сервера ..................................................178
6.1.4 
Настройка журналирования ........................................................179
6.1.5 
Использование специальных значений свойств .............................181

6.2 
Создание своих конфигурационных свойств ......................................182
6.2.1 
Определение хранителей конфигурационных свойств ..................184
6.2.2 
Объявление метаданных конфигурационного свойства ................187

6.3 
Настройка с по мощью профилей .........................................................190
6.3.1 
Определение свойств профиля .....................................................191
6.3.2 
Активация профилей ...................................................................192
6.3.3 
Условное создание bean-компонентов для профилей.....................193

Итоги  ................................................................................................................195

Часть II 
ИНТЕГРАЦИЯ С ПРИЛОЖЕНИЯМИ 
SPRING ..........................................................................................196

7 

Создание служб REST ......................................................................197

7.1 
Создание контроллеров RESTful ..........................................................198
7.1.1 
Извлечение данных с сервера ........................................................198
7.1.2 
Отправка данных на сервер .........................................................204
7.1.3 
Изменение данных на сервере .......................................................205
7.1.4 
Удаление данных на сервере .........................................................208

7.2 
Включение услуг на основе данных .....................................................209
7.2.1 
Настройка имен отношений и путей к ресурсам .........................212
7.2.2 
Деление на страницы и упорядочение ...........................................214

7.3 
Использование служб REST ..................................................................215
7.3.1 
Получение ресурса запросом GET..................................................217
7.3.2 
Отправка ресурса запросом PUT ..................................................219
7.3.3 
Удаление ресурса запросом DELETE ..............................................219
7.3.4 
Отправка ресурса запросом POST ................................................220

Итоги  ................................................................................................................221

8 

Безопасность REST API.................................................................222

8.1 
Знакомство с OAuth 2 ............................................................................223

8.2 
Создание сервера авторизации ............................................................229
Содержание

8.3 
Защита API с по мощью сервера ресурсов ............................................238

8.4 
Разработка клиента ...............................................................................241

Итоги  ................................................................................................................246

9 

Асинхронная передача сообщений........................................247

9.1 
Отправка сообщений с по мощью JMS .................................................248
9.1.1 
Настройка JMS ............................................................................249
9.1.2 
Отправка сообщений с по мощью JmsTemplate ..............................251
9.1.3 
Получение сообщений с по мощью JMS ...........................................260

9.2 
RabbitMQ и AMQP ..................................................................................264
9.2.1 
Добавление поддержки RabbitMQ в приложение Spring .................266
9.2.2 
Отправка сообщений с по мощью RabbitTemplate ..........................267
9.2.3 
Получение сообщений из RabbitMQ ...............................................271

9.3 
Обмен сообщениями с по мощью Kafka ...............................................276
9.3.1 
Настройка Spring для обмена сообщениями через Kafka ...............277
9.3.2 
Отправка сообщений с по мощью KafkaTemplate ...........................278
9.3.3 
Получение сообщений из Kafka ......................................................280

Итоги  ................................................................................................................282

10 

Интеграция Spring ............................................................................283

10.1 
Объявление простого потока интеграции ...........................................284
10.1.1 Определение потоков интеграции в XML .....................................286
10.1.2 Определение потоков интеграции в коде на Java ..........................288
10.1.3 Конфигурация на Spring Integration DSL ........................................290

10.2 
Обзор ландшафта Spring Integration ....................................................291
10.2.1 Каналы сообщений .......................................................................292
10.2.2 Фильтры .....................................................................................294
10.2.3 Преобразователи.........................................................................295
10.2.4 Маршрутизаторы .......................................................................296
10.2.5 Сплиттеры .................................................................................298
10.2.6 Активаторы служб .....................................................................301
10.2.7 Шлюзы .........................................................................................303
10.2.8 Адаптеры каналов .......................................................................304
10.2.9 Модули конечных точек ...............................................................306

10.3 
Создание потока интеграции для электронной почты ......................308

Итоги  ................................................................................................................316

Часть III 
РЕАКТИВНЫЙ SPRING ................................................317

11 

Введение в Reactor ..............................................................................318

11.1 
Основы реактивного программирования ...........................................319
11.1.1 Определение реактивных потоков данных ...................................321

11.2 
Reactor ....................................................................................................323
11.2.1 Диаграммы реактивных потоков ................................................325
11.2.2 Добавление зависимости от Reactor ............................................326

11.3 
Использование распространенных реактивных операций ................327
11.3.1 Создание реактивных типов ........................................................327
11.3.2 Комбинирование реактивных типов ............................................332
Содержание

11.3.3 Преобразование и фильтрация реактивных потоков ...................336
11.3.4 Выполнение логических операций с реактивными типами ............347

Итоги  ................................................................................................................349

12 

Разработка реактивных API ...................................................350

12.1 
Spring WebFlux .......................................................................................350
12.1.1 Введение в Spring WebFlux ............................................................352
12.1.2 Создание реактивных контроллеров ............................................354

12.2 
Определение обработчиков запросов в функциональном стиле ......359

12.3 
Тестирование реактивных контроллеров ............................................363
12.3.1 Тестирование запросов GET .........................................................363
12.3.2 Тестирование запросов POST .......................................................366
12.3.3 Тестирование с использованием действующего сервера ...............367

12.4 
Реактивный REST API ............................................................................368
12.4.1 Получение ресурсов ......................................................................369
12.4.2 Отправка ресурсов ......................................................................371
12.4.3 Удаление ресурсов ........................................................................372
12.4.4 Обработка ошибок ......................................................................373
12.4.5 Обмен запросами .........................................................................375

12.5 
Защита реактивного веб-API ................................................................376
12.5.1 Реактивная модель настройки безопасности ..............................377
12.5.2 Настройка реактивной службы учетных записей ........................379

Итоги  ................................................................................................................380

13 

Реактивное хранение данных ..................................................382

13.1 
R2DBC .....................................................................................................383
13.1.1 Определение сущностей предметной области для R2DBC ............384
13.1.2 Определение реактивных репозиториев ......................................389
13.1.3 Тестирование репозиториев R2DBC ............................................391
13.1.4 Определение службы управления агрегатами в OrderRepository ....393

13.2 
Реактивное хранилище документов в MongoDB .................................399
13.2.1 Определение типов документов ..................................................400
13.2.2 Определение реактивных репозиториев MongoDB .......................403
13.2.3 Тестирование реактивных репозиториев MongoDB .....................404

13.3 
Реактивное хранилище данных в Cassandra .......................................407
13.3.1 Определение классов предметной области для Cassandra ............408
13.3.2 Создание реактивных репозиториев Cassandra ............................412
13.3.3 Тестирование реактивных репозиториев Cassandra ....................413

Итоги  ................................................................................................................415

14 

RSocket .........................................................................................................416

14.1 
Введение в RSocket ................................................................................417

14.2 
Создание простого сервера и клиента RSocket ...................................419
14.2.1 Реализация модели «запрос–ответ» ............................................420
14.2.2 Реализация модели «запрос–поток» .............................................423
14.2.3 Реализация модели «запустил и забыл» ........................................425
14.2.4 Двунаправленная передача сообщений .........................................427

14.3 
Передача по протоколу RSocket через WebSocket ...............................431

Итоги  ................................................................................................................432
Содержание

Часть IV 
РАЗВЕРТЫВАНИЕ SPRING ......................................433

15 

Spring Boot Actuator ..........................................................................434

15.1 
Введение в Actuator ...............................................................................435
15.1.1 Настройка базового пути Actuator ..............................................436
15.1.2 Включение и отключение конечных точек Actuator .......................436

15.2 
Использование конечных точек Actuator ............................................438
15.2.1 Получение важной информации о приложении .............................439
15.2.2 Просмотр сведений о конфигурации .............................................442
15.2.3 Наблюдение за действиями приложения ......................................451
15.2.4 Получение метрик времени выполнения .......................................453

15.3 
Настройка Actuator ................................................................................457
15.3.1 Добавление информации в конечную точку /info ...........................457
15.3.2 Определение своих индикаторов работоспособности ..................462
15.3.3 Регистрация пользовательских метрик .......................................464
15.3.4 Создание пользовательских конечных точек ................................466

15.4 
Защита конечных точек Actuator .........................................................469

Итоги  ................................................................................................................471

16 

Администрирование Spring .......................................................472

16.1 
Spring Boot Admin ..................................................................................473
16.1.1 Создание сервера Admin ...............................................................473
16.1.2 Регистрация клиентов сервера Admin ..........................................475

16.2 
Исследование возможностей сервера Admin ......................................476
16.2.1 Обзор общего состояния приложения ...........................................477
16.2.2 Просмотр ключевых метрик ........................................................478
16.2.3 Исследование свойств окружения .................................................478
16.2.4 Просмотр и изменение уровней журналирования .........................480

16.3 
Защита сервера Admin ..........................................................................481
16.3.1 Включение регистрации на сервере Admin ....................................481
16.3.2 Аутентификация в Actuator .........................................................482

Итоги  ................................................................................................................483

17 

Мониторинг Spring с помощью JMX ..................................484

17.1 
Работа с компонентами MBean в Actuator ...........................................484

17.2 
Создание своих компонентов MBean ...................................................487

17.3 
Отправка уведомлений .........................................................................489

Итоги  ................................................................................................................491

18 

Развертывание Spring ....................................................................492

18.1 
Варианты развертывания .....................................................................493

18.2 
Сборка выполняемых файлов JAR ........................................................494

18.3 
Сборка образа контейнера ....................................................................495
18.3.1 Развертывание в Kubernetes .........................................................499
18.3.2 Корректное завершение работы ..................................................501
18.3.3 Проверка готовности и жизнеспособности приложения ..............502

18.4 
Создание и развертывание файлов WAR .............................................506

18.5 
Закончим тем, с чего начинали ............................................................508

Итоги  ................................................................................................................508
Содержание
A 

Создание проектов приложений Spring ..........................509

A.1 
Инициализация проекта с по мощью Spring Tool Suite .......................509

A.2 
Инициализация проекта с по мощью IntelliJ IDEA ..............................513

A.3 
Инициализация проекта с помощью NetBeans ...................................514

A.4 
Инициализация проекта с помощью start.spring.io............................519

A.5 
Инициализация проекта из командной строки ..................................522

A.6 
Сборка и запуск проектов .....................................................................525

Предметный указатель .....................................................................................527
Из отзывов к пятому изданию книги Крейга 
Уоллса «Spring в действии»

«Отличный источник знаний о таком сложном фреймворке».
– Арнальдо Габриэль Айяла Мейер (Arnaldo Gabriel Ayala Meyer),  
Consultores Informáticos S.R.L.

«Охватывает все аспекты последней версии Spring и демонстрирует их на 
практических примерах».
– Билл Флай (Bill Fly), Брукхейвенский колледж

«Настольная книга для изучения Spring Framework и отличное справочное руководство».
– 
Колин Джойс (Colin Joyce), Cisco

«На мой взгляд, это лучшая книга о Spring. Новое издание подверглось обширному 
обновлению, обеспечившему уникальный баланс между теорией и практикой. 
Она поможет вам быстро приступить к работе и даст подробные пояснения.
– 
Дэниел Вон (Daniel Vaughan), Европейский институт биоинформатики

«Исчерпывающее руководство по разработке облачных приложений с использованием 
Spring».
– Дэвид Уизерспун (David Witherspoon), Parsons Corporation

«Источник истины в последней инстанции для экосистемы Spring».
– Эдду Мелендес Гонсалес (Eddú Meléndez Gonzales), Scotiabank

«Я настоятельно рекомендую эту книгу и новичкам в Spring Framework, и опытным 
разработчикам, которые хотят глубже освоить новейшие возможности, 
доступные в экосистеме Spring 5».
– Иэн Кэмпбелл (Iain Campbell), Tango Telecom

«Даже будучи опытным разработчиком на Spring, я нашел в этой книге много 
новых практических советов».
– Джеттро Коэнради (Jettro Coenradie), Luminis
Предисловие

Фреймворк Spring появился более 18 лет назад, и его главной целью 
было упрощение разработки Java-приложений. Первоначальная цель 
состояла в том, чтобы дать облегченную альтернативу EJB 2.x. Но это 
было только начало. С годами фреймворк Spring охватывал все более 
широкий круг задач разработки, включая хранение данных, безопасность, 
интеграцию, облачные вычисления и т. д.
Несмотря на то что возраст Spring приближается к двум десятилетиям 
и он все шире охватывает сферу разработки корпоративных 
приложений на Java, в развитии фреймворка не наблюдается никаких 
признаков замедления. Spring продолжает решать проблемы разработки 
на Java, будь то приложение, развернутое на обычном сервере 
приложений, или контейнерное приложение, развернутое в кластере 
Kubernetes в облаке. А учитывая наличие Spring Boot – фреймворка, 
обеспечивающего автоматическую конфигурацию, помощь в сборке 
зависимостей и мониторинг времени выполнения, – никогда не было 
более удачного времени, чтобы стать разработчиком на Spring!
Это издание книги «Spring в действии» – ваш путеводитель по 
Spring и Spring Boot. Оно было обновлено и теперь еще полнее отражает 
все, что могут предложить оба фреймворка. Даже если вы только 
приступаете к изучению Spring, вы сможете запустить свое первое 
приложение на Spring еще до конца первой главы. По мере изучения 
книги вы узнаете, как создавать веб-приложения, работать с данными, 
защищать приложения и управлять их конфигурациями. Затем вы 
познакомитесь с вариантами интеграции приложений Spring с другими 
приложениями и узнаете, как извлечь выгоду из реактивного программирования, 
используя новый протокол RSocket. Ближе к концу 
вы увидите, как подготовить приложение к передаче в промышленное 
окружение, и узнаете о доступных вариантах развертывания.
Кем бы вы ни были – новичком, только начинающим изучать Spring, 
или ветераном, с многолетним опытом разработки на Spring, – эта 
книга станет вашим следующим шагом в вашем путешествии. Я очень 
рад представить вам это руководство и с нетерпением жду появления 
ваших творений на Spring!
Благодарности

Одна из самых замечательных особенностей Spring и Spring Boot – автоматическое 
создание всей базовой инфраструктуры приложения, 
что позволяет вам как разработчику сосредоточиться на логике, уникальной 
для вашего приложения. К сожалению, при написании книг 
такое невозможно. Или я что-то упустил?
Многие сотрудники в издательстве Manning приложили все силы, 
чтобы эта книга стала как можно лучше. Большое спасибо моему редактору-
консультанту Дженни Стаут (Jenny Stout) и выпускающему 
редактору Дейдре Хайам (Deirdre Hiam), литературному редактору 
Памеле Хант (Pamela Hunt), художнику Дженнифер Хоул (Jennifer 
Houle) и всей производственной команде за прекрасную работу над 
этой книгой.
В создании книги участвовало несколько рецензентов, которые 
вычитывали рукопись и своими бесценными отзывами помогли не 
сбиться с курса и продолжать освещать то, что действительно важно. 
За это я благодарю Эла Пезевски (Al Pezewski), Алессандро Кам-
пейса (Alessandro Campeis), Бекки Хьюетт (Becky Huett), Кристиана 
Кройцер-Бека (Christian Kreutzer-Beck), Конора Редмонда (Conor Red-
mond), Дэвида Паккуда (David Paccoud), Дэвида Торрубиа Иньиго (Da-
vid Torrubia Iñigo), Дэвида Уизерспуна (David Witherspoon), Германа 
Гонсалеса-Морриса (German Gonzalez-Morris), Иэна Кэмпбелла (Iain 
Campbell), Джона Гюнтера (Jon Guenther), Кевина Ляо (Kevin Liao), 
Марка Дешампса (Mark Dechamps), Майкла Брайта (Michael Bright), 
Филиппа Виалатта (Philippe Vialatte), Пьера-Мишеля Анселя (Pierre-
Michel Ansel), Тони Свитса (Tony Sweets), Уильяма Флая (William Fly) 
и Зородзайи Мукуя (Zorodzayi Mukuya).
Я обязательно должен поблагодарить всю команду инженеров, занимающихся 
разработкой Spring. Вы работаете над развитием одного 
из самых невероятных фреймворков, которые я когда-либо видел, 
и я рад считать себя вашим коллегой.
Большое спасибо моим соратникам по конференции «No Fluff/Just 
Stuff». Я продолжаю учиться у каждого из вас. И большое спасибо 
всем, кто посетил одну из моих сессий в рамках конференции NFJS; 
Глава   Благодарности

несмотря на то что я стою за трибуной, я часто многому учусь у вас.
Как и в предыдущем издании, я хотел бы поблагодарить финикийцев. 
Вы знаете, что вы сделали.
Наконец, спасибо моей прекрасной жене Рейми (Raymie). Ты – любовь 
всей моей жизни и моя самая сладкая мечта: спасибо за твою 
поддержку и за то, что выдержала еще один книжный проект. Спасибо 
моим милым и замечательным девочкам, Мейси (Maisy) и Мади 
(Madi): я так горжусь вами, и я рад видеть, какими замечательными 
девушками вы становитесь. Я люблю всех вас больше, чем можно себе 
представить или выразить словами.
Об этой книге

«Spring в действии, шестое издание» писалась с простой целью: дать 
вам возможность создавать потрясающие приложения с использованием 
Spring Framework, Spring Boot и других инструментов из 
экосистемы Spring. Книга начинается демонстрацией создания веб-
приложения на Java с поддержкой базы данных с по мощью Spring 
и Spring Boot. Затем она описывает дополнительные возможности, 
показывая, как организовать интеграцию с другими приложениями 
и программами, использующими реактивные типы. Наконец, в ней 
обсуждаются вопросы подготовки приложения к развертыванию.
Все проекты в экосистеме Spring снабжаются превосходной документацией, 
однако эта книга дает то, чего не может дать ни один из 
справочных документов, – практическое руководство по объединению 
компонентов Spring и созданию действующих приложений.

Кому адресована эта книга

Книга «Spring в действии, шестое издание» адресована всем Java-
разработчикам, желающим начать использовать Spring Boot и Spring 
Framework, а также опытным разработчикам на Spring, которые стремятся 
выйти за рамки основ и изучить новейшие возможности Spring.

Структура книги

Книга состоит из четырех частей и 18 глав. Часть I охватывает основы 
создания приложений на Spring:

„
 глава 1 знакомит с фреймворками Spring и Spring Boot, а также 
с приемами инициализации проекта на Spring. В этой главе вы 
сделаете первые шаги к созданию приложения Spring, которое 
будете развивать на протяжении всей книги;

„
 глава 2 обсуждает создание веб-уровня приложения с использованием 
Spring MVC. Здесь вы создадите контроллеры, обрабатывающие 
веб-запросы, и представления, отображающие информацию 
в веб-браузере;