Spring и Spring Boot. Разработка облачных приложений на Java
Год издания: 2025
Автор: Урванов Федор
Издательство: БХВ-Петербург
ISBN: 978-5-9775-2049-2
Серия: Профессиональное программирование
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы + слой распознанного текста
Количество страниц: 381
Описание: В книге рассмотрено актуальное состояние технологий Spring и Spring Boot, помогающих шире раскрыть возможности языка Java и аспектно-ориентированного программирования. Пошагово объяснено, как самостоятельно написать и развернуть облачный проект под управлением Spring. Рассказано о координации микросервисов на Java с применением Spring и модуля Spring Core способах внедрения зависимостей, аннотировании кода. На примере сквозного веб-приложения описаны важнейшие приемы работы с данными в стиле REST, тестирование данных, обеспечение согласованности, безопасности и долговременного хранения данных в приложении.
Примеры страниц (скриншоты)
Оглавление
Введение··················.............................................................................................................······ 11
Глава 1. Теория ····························································································.....................·········· 13
1 .1. Краткая история Spring .......................................................................................................... 13
1.2. Альтернативные фреймворки ................................................................................................ 14
1.3. Внедрение зависимостей ........................................................................................................ 14
1.4. Инверсия управления ............................................................................................................. 19
1.5. Антипаттерны внедрения зависимостей ............................................................................... 22
1 .6. Многоуровневая архитектура ................................................................................................ 25
1. 7. Аспектно-ориентированное программирование .................................................................. 29
1.8. Резюме ..................................................................................................................................... 31
Глава 2. Микросервисы ·············......·····································............··································........ 33
2.1. Для чего нужны микросервисы? ........................................................................................... 33
2.2. Основные компоненты микросервисной архитектуры ........................................................ 34
2.3. Spring Cloud ............................................................................................................................. 36
2.4. KuЬemetes ................................................................................................................................. 37
2.5. Резюме ...................................................................................................................................... 40
Глава 3. Примеры приложения.................................................................................. 41
3. 1. Пример приложения на Spring Framework ............................................................................. 41
3 .1.1. Настройка пула соединений Д1U1 Eclipse ...................................... , ............................ 44
3.1.2. Настройка пула соединений Д1U1 IntelliJ IDEA ......................................................... 49
3 .1.3. Запуск клие~пской части проекта ............................................................................. 54
3.2. Пример приложения на Spring Boot ...................................................................................... 56
3.3. Резюме ..................................................................................................................................... 56
Глава 4. Первые шаги ........................................................................................................ 59
4.1. Spring и контейнер бииов ....................................................................................................... 59
4.2. Простой сервис на Spring Framework .................................................................................... 61
4.2.1. Скачайте исходные коды ........................................................................................... 61
4.2.2. Пояснения к исходному коду .................................................................................... 61
4.2.3. Запуск ................................................... ....................................................................... 64
4.3. Простой сервис на Spring Boot .............................................................................................. 64
4.3. 1. Скачайте исходные коды ........................................................................................... 64
4.3.2. Spring Initializr ............................................................................................................ 64
4.3 .3. Пояснения к исходному коду .................................................................................... 66
4.3.4. Запуск .......................................................................................................................... 68
4.4. Р83Личия между Spring Boot и Spring Framework ................................................................ 68
4.5. Резюме ..................................................................................................................................... 69
Глава 5. Модуль Sprin.g Core ................................................................................................. 71
5 .1. ХМL-конфиrурация (д11Я Spring Framework:) ........................................................................ 71
5.1.1. Листенер ContextLoadListener ................................................................................... 71
5.1 .2. Разделение по файлам и контекстам ........................................................................ 72
5.1.3. Пространства имен ..................................................................................................... 73
5.1.4. Объявление бинов ....................................................................................................... 74
5.1.5. Заrрузка «пропертей» и профили ............................................................................... 75
5.1.6. Сканирование бииов ................................................................................................... 77
5. \ . 7. Импортирование файлов конфиrураЦИЙ .................................................................. 79
5.1.8. Коллекции ................................................................................................................... 80
5.2. Jаvа-конфиrурация (дJIЯ Spring Boot) .................................................................................... 83
5.2. 1. Аннотация @SpringBootApplication· .......................................................................... 83
5.2.2. Аннотации @Configuration и@Веап ........................................................................ 84
5.2.3. Профили ......................................... : ............................................................................ 85
5.3. Би:ны Spring ............................................................................................................................. 89
5.3.1. Объявление ............ .-.................................................................................................... 89
5.3.2. Жюненный цикл ........................................................................................................ 90
5.4. Резюме ..................................................................................................................................... 93
Глава 6. Аспектво-орвевтвроваввое проrраммвровавве .................................... 95
6.1. Прокси JDK и CGLIB ............................................................................................................. 95
6.2. Аспекты Spring ........................................ : ............................................................................... 96
6.2.1. Аннотация @Transactional ........................................................................................ 96
6.2.2. ПодJ(JJЮчение зависимостей ...................................................................................... 96
6.2.3. ХМL-конфиrурация АОП .......................................................................................... 97
6.2.4. Jаvа-конфиrурация АОП .................. ........................................................................ 103
6.3. Библиотека AspectJ ............................................................................................................... 106
6.4. Резюме ........................................................................................................................... ........ 107
Глава 7. Рабо,-а с базами данных ............................................................................... 109
7.1. Слой постоя.нства .................................................................................................................. 109
7.2. Библиотека Liquibase ............................................................................................................ 112
7 .2.1. Подключение зависимостей .................................................................................... 112
7.2.2. Настройка д11Я Spring Framework ............................................................................ 112
7.2.3. Настройка д11Я Spring Boot ....................................................................................... l 14
7.3. Spring JDBC ........................................................................................................................... 115
7.3. 1. Подключение зависимостей ..................................................................................... 115
7.3.2. Абстракция JdbcTemplate ......................................................................................... 116
7.3.3. JdbcClient ........................................................................................................ : ........... 119
7.3.4. Обработка искmочеиий ............................................................................................ 120
8.4. Файлы «пропертей» в Spring Boot ....................................................................................... 194
8.5. АниотаШIJI @ConfigurationProperties .................................................................................. 195
8.6. Проект Spring Cloud Config .................................................................................................. 197
8.7. Резюме ................................................................................................................................... 200
Глав.а 9. Логвровавве ....................................................................................................... 201
9.1 . Хаос с библиотеками логироваНИJl ...................................................................................... 201
9.2. Logback .................................................................................................................................. 202
9.3. Стек ELK ............................................................................................................................... 206
9.4. Резюме .............................................................................................................. : .................... 210
Глава 10. Локалвзац·и.11 ................................................................................................. 211
10.1. Интернациональные приложения ...................................................................................... 211
10.2. Интерфейс MessageSource .................................................................................................. 212
10.3. Резюме .................................................................................................................................. 216
Глава 11. Разработка веб-првложевв.и ..................................................................... 217
11.1. Фреймворк Spring МVС ...................................................................................................... 217
11 .1.1. Настройка дл,1 Spring Framework ........................................................................... 217
11.1 .2. Настройка дru1 Spring Boot ..................................................................................... 219
11.1.3. Контроллеры ........................................................................................................... 219
11 .1.4. Обработка НТТР GET ............................................................................................. 220
11.1 .5. Обработка НТТР POST .................. ........................................................................ 222
11.1.6. Архитектурный стиль REST .......... ........................................................................ 223
11. 1 .7. Обработка НТТР DELETE .................................................................................... 224
11.1.8. Сокращенные аннотации ............... ........................................................................ 225
11.1.9. Обработка искmоченнй .................. ........................................................................ 225
11.2. СпецифИ](аwiЯ Jakarta Validation ....................................................................................... 228
11.2.1. Подкmочение зависимостей .................................................................................. 228
11.2.2. AннoтaШIJl @Valid .................................................................................................. 229
11 .2.3. Аннотация@NоtNи// .............................................................................................. 230
11.2.4. АннотаШ1Я @Size .................................................................................................... 231
11.2.5. Аннотации @Мiп и @Мах ..................................................................................... 231
11.3. Техволоrия Jakarta Pages .................................................................................................... 232
11.3.1. Введение ................................................................................................................. 232
11.3.2. Примеры в Apache Tomcat ..................................................................................... 232
11.3.3. Настройка Д1V1 Spring Framework .......................................................................... 232
11.3.4. Синтаксис JSP ................................. ........................................................................ 235
11.3.5. Синтаксис JSPX ...................................................................................................... 235
11 .3 .6. Пользовательские теги ........................................................................................... 236
11.3.7. Главная страница сайта .......................................................................................... 238
11.3.8. Локализованные сообщения .................................................................................. 240
11.3.9. ВыражеНИJI Jakarta Expression Language ............................................................... 240
11.3.10. Тег Jsp:directive.page ............................................................................................ 241
11.3.1 1. Тег jsp:output ........................................................................................................ 241
11.3.12. Основное содержимое файла home.jspx ............................................................. 242
11.3.13. Ter spring:htm/Escape ........................................................................................... 243
11.3.14. Terspring:url ......................................................................................................... 243
11 .3.15. Контроллер HomeController ................................................................................ 243
11.3.1 6. Тег mvc:view-contro//er ........................................................................................ 244
11.3.17. Атрибуты модели ................................................................................................. 244
11.3.18. Тег c.forEach ......................................................................................................... 241
11 .3. 19. Тег c:out ................................................................................................................ 248
11.3.20. Тег spring:escapeBody .......................................................................................... 248
11.3.2 1. Формы ................................................................................................................... 248
11.3.22. Интеrрация с Jakarta Validation ........................................................................... 250
11.3.23. Тег c:if ................................................................................................................... 252
11.3.24. Тег fmt:formatDate ................................................................................................ 253
11.3.25. Темы оформлеЮIЯ ................................................................................................ 254
11 .3.26. Интернационализация .......................................................................................... 256
11 .4. Шаблонизатор Thymeleaf ................................................................................................... 256
11.4.1. Thymleafкaк современна.я замена Jakarta Pages .................................................. 256
11 .4.2. Настройка для Spring Boot ..................................................................................... 257
11.4.3. КоНtроллер ............................................................................................................. 257
11.4.4. Префихс th .............................................................................................................. 258
11.4.5. Контекстно-относнтелъные ссылк:и ...................................................................... 259
11.4.6. Фрагменты .............................................................................................................. 259
11.4.7. Элемент th:Ь/ock ..................................................................................................... 260
11.4.8. Локализованные сообщения .................................................................................. 261
11.4.9. Фрагмент header ..................................................................................................... 261
11 .4.10. Фрагмент тепи ..................................................................................................... 262
11.4.11. Фраrмент/ооtеr .................................................................................................... 263
11 .4.12. Атрибут th:each .................................................................................................... 263
11.4.13. Формы ................................................................................................................... 266
11.4.14. Интеrрация с Jakarta Validation ........................................................................... 268
11.4.15. Атрибут th:if ......................................................................................................... 268
11.5. Модуль Spring WebFlux ..................................................................................................... 269
11.6. Резюме ................................................................................................................................. 272
Глава 12. Фреймворк Spring Security ...................................................................... 273
12.1. Архитек-rура Spring Security ............................................................................................... 273
12.2. ПоДКJIЮченне к пpoeicry ..................................................................................................... 275
12.3. Конфигурация ..................................................................................................................... 276
12.4. Интерфейсы UserDetails н UserDetai/sService .................................................................. 219
12.5. Интерфейсы AuthentiationManager н Authentication Provider ......................................... 284
12.6. SecurityContextRepository ................................................................................................... 287
12.7. Раздел сайта SecurityFilterChain ........................................................................................ 289
12.7.1. Зоны доступа .......................................................................................................... 289
12.7.2. Тег security:http и метод securityMatcher .............................................................. 289
12.7.3. Тег security:intercept-url и метод authorizeHttpRequests ..................................... 290
12.7.4. Защита oтCSRF ...................................................................................................... 292
12.7.5. Форма входа ........................................................................................................... 294
12.7.6. Кнопка выхода ........................................................................................................ 296
12.7.7. Листинги ................................................................................................................. 297
12.8. SecurityFilterChain зоны API клиента ............................................................................... 298
12.8.1. Тег security: http и метод securityMatcher .................. ............................................ 298
12.8.2. Интерфейс AuthenticationEntryPoint ..................................................................... 299
12.8.3. Тег security:intercept-url и метод authorizeHttpRequests ..................................... 301
12.8.4. Механизм CORS ..................................................................................................... 302
12.8.5. Защwrа от CSRF ...................................................................................................... 304
12.8.6. Листинги ................................................................................................................. 305
12.8.7. Ауrентяфикаrm:я из конrроплера .......................................................................... 306
12.9. Авторизация на основе методов ........................................................................................ 308
12.1 О. Библиотека Spring Security JSP Taglib ............................................................................ 31 О
12.11. Ингеrрация с Тhymeleaf ................................................................................................... 31 I
12.12. Резюме ............................................................................................................................... 313
Глава 13. Докумевтвровавве RЕSТ-сервисов ....................................................... 315
13.1. Введение .............................................................................................................................. 315
13 .2. Подключение зависимостей. .............................................................................................. 315
13.3. Просмотр сгенерированной докуменrаwm ...................................................................... 316
13.4. Документирование API ...................................................................................................... 317
13.5. Резюме ................................................................................................................................. 321
Глава 14. Т ест-ы ................................................................................................................. 323
14.1. Виды тестов ......................................................................................................................... 323
14.2. Фреймворк JUnit ................................................................................................................. 323
14.2.1 . Подключение зависимостей .................................................................................. 323
14.2.2. Простейший тест ............... : ..................................................................................... 324
14.2.3. Запуск тестов ........................................................................................................... 327
14.2.4. Параметризованные тесты ...................................................................................... 329
14.3. Фреймворк TestNG .............................................................................................................. 331
14.3 .1. Подключение зависимостей .................................................................................. 331
14.3.2. Простейmийтест .................................................................................................... 331
14.3.3. Запуск тестов .......................................................................................................... 333
14.3.4. Параметризованные тесты ............. ........................................................................ 334
14.4. ФреRмворк Mockito ............................................................................................................ 335
14.4.1. ВведеJШе ................................................................................................................. 335
14.4.2. Зависимости Mockito + JUnit ................................................................................. 336
14.4.3. Примеры в тестовом приложении ........................................................................ 337
14.4.4. Интеграция с тестом JUnit ..................................................................................... 337
14.4.5. Мосk-объекты ................................. ........................................................................ 337
14.4.6. Hacтpoltxa возвращаемых значеи.ий ..................................................................... 338
14.4.7. Доnолннrельные примеры ..................................................................................... 340
14.4.8. Подсчет вызова методов ........................................................................................ 342
14.4.9. Перехват параметров .............................................................................................. 343
14.4.10. Зависимости Mockito + TestNG ........................................................................... 345
14.4.1 l. Интеграция с тестом TestNG ............................................................................... 346
14.5. Фреймворк Spring ............................................................................................................... 348
14.5.1. Введение ................................................................................................................. 348
14.5.2. Подключение зависимостей .................................................................................. 349
14.5.3. Интеграция JUnit и Spring ..................................................................................... 349
14.5.4. Библиотека Testcontainers ...................................................................................... 350
14.5.5. Класс Sing/eConnectionDataSource ....................................................................... 352
14.5.6. Класс C/ockConfig ........................................................ : .......................................... 354
14.5.7. Класс BaseDaolmp/Test .......................................................................................... 355
14.5.8. Аннотация @Data.JpaTest ...................................................................................... 356
14.5.9. Класс BookcaseDaolmp/Test ................................................................................... 351
14.5.10. АННОТЗЦИJI @Sq/ ·················· .. ················· .............................................................. 358
14.5.11. Библиотека assertj ................................................................................................. 359
14.5.12. Фреймворк MockМvc ........................................................................................... 360
14.5.13. АннотаЦЮ1 @SpringBootTest ................................................................................. 360
14.5.14. Настройка MockМvc для Spring Framework ........................................................ 362
14.5.15. Простой тест MockМvc ........................................................................................ 363
14.5.16. Аннотация @МосkВеап ........................................................................................ 364
14.5.17. ИнтеграЦЮI MockМvc и Spring Security .............................................................. 365
14.6. Резюме ................................................................................................................. 368
Глава 15. Клиентское орвложевве ................................................................................... 369
15.1. Проект Spring Moblle .............................................................................................. 369
15.2. Приложенне Progressive Web Application .................................................................. 369
15.3. Работающая игра ................................................................................................... 371
Закл:ючевве .................................................................................................................. 377
Предметный указатель ········.................··········································································· 379