О чём курс
Курс посвящен темам, необходимым для профессионального применения Spring Framework на практике, таким как расширенные вопросы применения Spring REST, технологии HATEOAS и CORS, документирование REST-сервисов, сериализация и ограничение данных, передаваемых клиенту, тонкости применения аннотации @Transactional, применение оптимистических транзакций, JWT-авторизация и сервер авторизации OAuth2, практическое применение реактивного программирования с использованием WebFlux, тестирование Spring-сервисов, планировщик задач и Actuator, развертывание в Docker.
Цели
Познакомить слушателей с расширенными темами применения Spring Framework, предоставить примеры применения.
Целевая аудитория
Разработчики Java, архитекторы Java.
Предварительная подготовка
Уверенное владение Java, знание Spring.
Для кого
Разработчик
Улучшаемые навыки
Spring
Spring Boot
Spring Security
Микросервисы
REST API
Web Services
Hibernate
JPA
Thymeleaf
Maven
Gradle
Kubernetes
Docker
CI/CD
JUnit
JUnit
Mockito
Асинхронное программирование
WebSocket
GraphQL
Оптимизация производительности
Безопасность приложений
DevOps
Cloud Native
AWS
Google Cloud
Инструменты
Docker
IntelliJ IDEA
Apache Maven
Расписание курсов
Программа курса
01
Spring Data REST - расширенные темы (5 ч)
1. Spring REST (3 ч)
Введение. Обзор Spring REST (1 ч)
Условные операции с применением заголовков (ETag, If-Match, If-None-Match, If-modified-since) (30 мин)
REST события (30 мин)
Модель зрелости REST-сервисов (30 мин)
Spring HATEOAS (30 мин)
2. API RestTemplate и WebClient для написания клиентов REST-сервисов (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 Framework.
02
Настроить и использовать Spring Boot для быстрой разработки и деплоя приложений.
03
Реализовывать безопасность приложений с помощью Spring Security.
04
Интегрировать RESTful API и Web Services в свои проекты.
05
Проводить юнит-тестирование и интеграционное тестирование с JUnit и Mockito.
06
Разрабатывать асинхронные приложения с использованием Spring WebFlux.
07
Использовать WebSocket для реализации реального времени взаимодействия.
08
Работать с GraphQL для создания гибких API.
09
Использовать Spring Data для работы с различными типами баз данных.
10
Реализовывать сложные бизнес-процессы с помощью Spring Integration.
11
Обрабатывать большие объемы данных с помощью Spring Batch.
Курс проводят
Козлов Павел
Специалист в области разработки ПО
О тренере
Павел в IT отрасли с 2005 года. В настоящее время занимает позицию Главного архитектора в компании IBS.
За время свей профессиональной деятельности принимал участие в многочисленных проектах для ведущих российских и зарубежных компаний, таких как Boeing, Почта России, DHL, MVideo.
Главный интерес Павла - разработка масштабируемых приложений на Java, а также предоставление технических решений для повышения производительности и надежности приложений.