Применение Spring Framework. Углубленный курс (SPRING_ADV) – Программа курса

Программа курса

1. Spring Data REST - расширенные темы

  • Spring REST
  • 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