Spring в действии
Покупка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Автор:
Уоллс Крейг
Перевод:
Киселев Артём Николаевич
Год издания: 2022
Кол-во страниц: 544
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-93700-112-2
Артикул: 458601.02.99
Это исчерпывающее руководство по основным возможностям Spring, написанное простым и ясным языком. Книга шаг за шагом проведет вас по пути создания законченного веб-приложения на основе базы данных. Новое, 6-е издание охватывает не только основы Spring, но также новые возможности, такие как реактивные потоки или интеграция с Kubernetes и RSocket. Независимо от того, впервые ли вы знакомитесь с фреймворком Spring или переходите на новую версию Spring 5.3, этот классический бестселлер станет вашей настольной книгой.
Издание предназначено Java-разработчикам, как уже использующим, так и только начинающим применять в своей работе Spring.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Крейг Уоллс 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