Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
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 (дата обращения: 21.11.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