Об авторе .......................................................................................................... 16
О научных редакторах ....................................................................................... 17
Благодарности................................................................................................... 18
Глава 1. Фреймворк Spring 5 ............................................................................ 19
Немного истории .......................................................................................... 19
Принципы и паттерны проектирования......................................................... 20
Фреймворк Spring 5 ...................................................................................... 21
Простое веб-приложение Spring.................................................................... 22
Использование Maven для создания проекта.......................................... 23
Добавление зависимостей...................................................................... 23
Веб-конфигурация Spring....................................................................... 26
Классы................................................................................................... 33
Запуск приложения................................................................................ 38
Использование Java-конфигурации ........................................................ 40
Резюме ......................................................................................................... 44
Глава 2. Введение в Spring Boot ....................................................................... 45
Spring Boot.................................................................................................... 45
Spring Boot спешит на помощь ............................................................... 47
Spring Boot CLI....................................................................................... 48
Модель приложения Spring Boot ................................................................... 50
Почему Spring Boot?...................................................................................... 55
Резюме ......................................................................................................... 58
Глава 3. Внутреннее устройство и возможности Spring Boot............................. 59
Автоматическая конфигурация ..................................................................... 59
Отключение конкретных автоконфигурационных классов...................... 61
Аннотации @EnableAutoConfiguration и @Enable<технология>............... 63
Возможности Spring Boot .............................................................................. 67
Класс SpringApplication........................................................................... 70
Пользовательский баннер...................................................................... 71
Класс SpringApplicationBuilder................................................................. 75
Аргументы приложения.......................................................................... 78
Интерфейсы ApplicationRunner и CommandLineRunner................................... 80
Конфигурация приложения.................................................................... 82
Примеры использования свойств конфигурации .................................... 84
Пользовательский префикс для свойств................................................. 91
Резюме ......................................................................................................... 95
Глава 4. Создание веб-приложений.................................................................. 96
Spring MVC.................................................................................................... 96
Автоконфигурация Spring Boot MVC .............................................................. 97
Spring Boot Web: приложение ToDo............................................................... 99
Приложение ToDo ................................................................................ 100
Запуск: приложение ToDo .................................................................... 111
Тестирование: приложение ToDo ......................................................... 112
Spring Boot Web: переопределение настроек по умолчанию ....................... 117
Переопределение настроек сервера .................................................... 117
Формат даты JSON............................................................................... 118
Content-Type: JSON/XML ....................................................................... 119
Spring MVC: переопределение настроек по умолчанию ........................ 120
Использование другого контейнера приложения ................................. 121
Spring Boot Web: клиент.............................................................................. 122
Клиентское приложение ToDo.............................................................. 122
Резюме ....................................................................................................... 130
Глава 5. Доступ к данным .............................................................................. 131
Базы данных SQL ........................................................................................ 131
Spring Data ................................................................................................. 132
Spring JDBC................................................................................................. 133
Работа с JDBC в Spring Boot ................................................................. 134
Приложение ToDo с использованием JDBC ........................................... 135
Spring Data JPA ........................................................................................... 142
Использование Spring Data JPA со Spring Boot...................................... 143
Создание приложения ToDo с использованием Spring Data JPA ............ 144
Spring Data REST......................................................................................... 151
Spring Data REST и Spring Boot............................................................. 152
Приложение ToDo с Spring Data JPA и Spring Data REST ....................... 152
Базы данных NoSQL .................................................................................... 159
Spring Data MongoDB .................................................................................. 159
Использование Spring Data MongoDB со Spring Boot............................. 160
Приложение ToDo с использованием Spring Data MongoDB .................. 162
Приложение ToDo со Spring Data MongoDB REST.................................. 165
Spring Data Redis......................................................................................... 166
Использование Spring Data Redis со Spring Boot ................................... 166
Приложение ToDo со Spring Data Redis................................................. 166
Дополнительные возможности по работе с данными
с помощью Spring Boot................................................................................ 170
Резюме ....................................................................................................... 171
Глава 6. Работа с WebFlux и Reactive Data ...................................................... 172
Реактивные системы................................................................................... 172
Манифест реактивных систем .............................................................. 173
Project Reactor ............................................................................................ 174
Создание приложения ToDo с использованием Reactor......................... 175
WebFlux ...................................................................................................... 183
WebClient ............................................................................................. 184
WebFlux и автоконфигурация Spring Boot.................................................... 185
Использование WebFlux со Spring Boot................................................. 186
Реактивные данные .................................................................................... 193
Реактивные потоки данных MongoDB................................................... 193
Резюме ....................................................................................................... 202
Глава 7. Тестирование ................................................................................... 203
Фреймворк тестирования Spring.................................................................. 203
Фреймворк тестирования Spring Boot.......................................................... 205
Тестирование конечных точек веб-приложения ................................... 206
Имитация компонент............................................................................ 207
Тестовые срезы Spring Boot.................................................................. 208
Резюме ....................................................................................................... 214
Глава 8. Безопасность .................................................................................... 215
Spring Security............................................................................................. 215
Обеспечение безопасности с помощью Spring Boot..................................... 216
Приложение ToDo с базовым уровнем безопасности ................................... 217
Переопределяем безопасность базового уровня .................................. 222
Переопределение используемой по умолчанию страницы входа.......... 224
Пользовательская страница входа ....................................................... 226
Безопасность при использовании JDBC ....................................................... 233
Создание приложения-справочника с использованием
средств безопасности JDBC.................................................................. 233
Использование приложения Directory в приложении ToDo ................... 241
Безопасность WebFlux................................................................................. 246
Создание приложения ToDo с OAuth2.......................................................... 247
Создание приложения ToDo в GitHub ................................................... 250
Резюме ....................................................................................................... 256
Глава 9. Обмен сообщениями......................................................................... 257
Что такое обмен сообщениями.................................................................... 257
Использование JMS со Spring Boot .............................................................. 258
Создание приложения ToDo с использованием JMS.............................. 258
Использование паттерна публикации/подписки JMS ............................ 268
Удаленный сервер ActiveMQ................................................................. 269
Использование RabbitMQ со Spring Boot...................................................... 269
Установка RabbitMQ ............................................................................. 270
RabbitMQ/AMQP: точки обмена, привязки и очереди ............................ 270
Создание приложения ToDo с помощью RabbitMQ................................ 272
Удаленный сервер RabbitMQ ................................................................ 282
Обмен сообщениями в Redis с помощью Spring Boot ................................... 282
Установка Redis ................................................................................... 283
Создание приложения ToDo с использованием Redis............................ 283
Удаленный сервер Redis....................................................................... 290
Использование WebSockets со Spring Boot................................................... 290
Создание приложения ToDo с использованием WebSockets .................. 290
Резюме ....................................................................................................... 300
Глава 10. Spring Boot Actuator........................................................................ 301
Spring Boot Actuator .................................................................................... 302
Создание приложения ToDo с использованием Actuator .............................. 302
/actuator .............................................................................................. 307
/actuator/conditions .............................................................................. 308
/actuator/beans..................................................................................... 309
/actuator/configprops ............................................................................ 310
/actuator/threaddump ........................................................................... 310
/actuator/env ........................................................................................ 311
/actuator/health .................................................................................... 312
/actuator/info........................................................................................ 313
/actuator/loggers................................................................................... 313
/actuator/loggers/{name} ...................................................................... 314
/actuator/metrics................................................................................... 315
/actuator/mappings ............................................................................... 316
/actuator/shutdown............................................................................... 317
/actuator/httptrace ................................................................................ 319
Изменение идентификатора конечной точки........................................ 320
Поддержка CORS в Spring Boot Actuator ............................................... 320
Изменение пути конечных точек управления приложением ................. 321
Обеспечение безопасности конечных точек......................................... 321
Настройка конечных точек................................................................... 322
Реализация пользовательских конечных точек актуатора ........................... 322
Создание приложения ToDo с пользовательскими
конечными точками актуатора ............................................................. 323
Конечная точка health Spring Boot Actuator ................................................. 331
Создание приложения ToDo с пользовательским индикатором
состояния приложения ........................................................................ 334
Метрики Spring Boot Actuator ...................................................................... 339
Создание приложения ToDo с Micrometer: Prometheus и Grafana .......... 339
Получение общей статистики для Spring Boot
с помощью Grafana .............................................................................. 350
Резюме ....................................................................................................... 352
Глава 11. Создание приложений Spring Integration
и Spring Cloud Stream....................................................................................... 353
Азбука Spring Integration............................................................................. 354
Программирование Spring Integration................................................... 357
Использование XML ............................................................................. 362
Использование аннотаций ................................................................... 364
Использование JavaConfig.................................................................... 366
Приложение ToDo с интеграцией чтения файлов ................................. 367
Spring Cloud Stream..................................................................................... 372
Spring Cloud ......................................................................................... 372
Spring Cloud Stream.............................................................................. 374
«Стартовые пакеты» для приложений Spring Cloud Stream................... 396
Резюме ....................................................................................................... 397
Глава 12. Spring Boot в облаке ....................................................................... 398
Облачная и нативная облачная архитектура............................................... 398
Приложения на основе 12 факторов ........................................................... 399
Микросервисы ............................................................................................ 401
Подготовка приложения ToDo как микросервиса......................................... 402
Платформа Pivotal Cloud Foundry................................................................. 404
PAS: сервис приложений Pivotal ........................................................... 406
Возможности PAS................................................................................. 407
Использование PWS/PAS ...................................................................... 408
Cloud Foundry CLI: интерфейс командной строки ................................. 410
Вход в PWS/PAS с помощью утилиты CLI.............................................. 410
Развертывание приложения ToDo в PAS............................................... 411
Создание сервисов............................................................................... 414
Убираем за собой................................................................................. 418
Резюме ....................................................................................................... 419
Глава 13. Расширение возможностей Spring Boot ........................................... 420
Создание spring-boot-starter........................................................................ 420
Модуль todo-client-spring-boot-starter ................................................... 422
Модуль todo-client-spring-boot-autoconfigure ......................................... 423
Создание функциональности @Enable*....................................................... 431
Сервис REST API приложения ToDo............................................................. 434
Установка и тестирование .......................................................................... 437
Проект Task ......................................................................................... 437
Запуск приложения Task ...................................................................... 440
Резюме ....................................................................................................... 441
Приложение. Интерфейс командной строки Spring Boot................................ 442
Spring Boot CLI............................................................................................ 442
Команда run................................................................................................ 444
Команда test ............................................................................................... 446
Команда grab.............................................................................................. 449
Команда jar................................................................................................. 450
Команда war ............................................................................................... 451
Команда install ............................................................................................ 452
Команда uninstall ........................................................................................ 453
Команда init................................................................................................ 454
Примеры использования команды init .................................................. 456
Альтернатива команде init ................................................................... 458
Команда shell.............................................................................................. 458
Команда help .............................................................................................. 459
Резюме ....................................................................................................... 460