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