Курс: Spring Advanced
Продолжительность курса: 40 ак. ч.
Описание курса:
Курс посвящен темам, необходимым для профессионального применения Spring Framework на практике, таким как расширенные вопросы применения Spring REST, технологии HATEOAS и CORS, документирование REST-сервисов, сериализация и ограничение данных, передаваемых клиенту, тонкости применения аннотации @Transactional, применение оптимистических транзакций, JWT-авторизация и сервер авторизации OAuth2, практическое применение реактивного программирования с использованием WebFlux, тестирование Spring-сервисов, планировщик задач и Actuator, развертывание в Docker.
Аудитория:
Разработчики Java, архитекторы Java.
Необходимая подготовка:
Уверенное владение Java, знание Spring.
Программа курса:
Модуль 1. Spring Data REST - расширенные темы
• Spring REST
- Введение. Обзор Spring REST
- Условные операции с применением заголовков (ETag, If-Match, If-None-Match, If-modified-since)
- REST события
- Модель зрелости REST-сервисов
- Spring HATEOAS
• API RestTemplate и WebClient для написания клиентов REST-сервисов
• Документирование REST-сервисов с использованием Swagger и SpringFox
Модуль 2. Object mapping и валидация
• Ограничение данных, передаваемых клиенту: @JsonIgnore, nullifying fields, DTO
• Проекции и ограничения в Spring Data REST
• Использование MapStruct для автоматического мэппинга в DTO
• Пользовательские сериализаторы и десериализаторы
• Валидация данных модели с помощью аннотаций javax.validation и кастомных аннотаций
Модуль 3. Транзакции
• Анотация @Transactional
• Уровни изоляции транзакций
• Распространение транзакций
• Обработка исключений в транзакциях
• Проблема вызова транзакции из того же бина
• Оптимистические блокировки
• Подключение нескольких БД к проекту
• Распределенные транзакции и паттерн SAGA
Модуль 4. Безопасность для REST-сервисов (JWT авторизация и управление ролями)
• Подходы к использованию безопасности в Spring
• Разработка сервера UAA с использованием OAuth2
• JWT токены
• Использование Spring Security для доступа на основе ролей, демонстрация примеров
Модуль 5. Реактивное программирование на Spring WebFlux
• Обзор реактивного подхода
• Спецификация реактивных потоков в Java 9
• Классы Mono и Flux
• Операторы
• Реактивные драйверы БД R2DBC
• Реактивный Spring Data
• Построение REST API с использованием WebFlux
• WebClient для получения реактивных данных
• Протокол RSocket
• Реактивный доступ к RabbitMQ
• Реактивные паттерны и бенчмарки
Модуль 6. Тестирование сервисов Spring
• Юнит-тесты с применением Mockito
• Интеграционное тестирование
• Аннотации тестирования Spring
• Фреймворк TestContext
• Серверные тесты REST
• Тестирование REST сервисов в IntelliJ IDEA
• Тестирование WebFlux
Модуль 7. Spring Планировщики
• Аннотация @Scheduled
• fixedRate, fixedDelay, initialDelay
• использование выражений CRON
Модуль 8. Spring кэширование
• Использование кеширования
• Использование и параметры настройки EhCache
• @Cacheable
• @CacheEvict, @CachePut
• @CacheConfig
• Conditional кэширование
• Java-based кэширование
• Кэширование в Spring Data
• Кэширование в Spring на основе EhCache
• Конфигурирование EhCache
Модуль 9. Spring Boot Actuator
• Actuator endpoints
• Метрики в Spring Boot
• Мониторинг и управление через HTTP
• Инструмент мониторинга Spring Boot Admin
Модуль 10. Развертывание приложения Spring
• Развертывание в Docker
• Развертывание в nginx as a front serverв качестве фронт-сервера (включая балансировку нагрузки)
• HTTP кэширование при помощи NGINX
• Развертывание приложения Spring с помощью nginx - контейнерная установка, docker-compose
Окончательная цена указывается в договоре на обучение.
Записаться на курс