Требования к участникам:

Знание основ Spring, Spring MVC, REST, Spring Data JPA, Spring Security, Basic Authorization, Maven, JavaScript
Оптимально: программа Стажировка Spring 5/JPA Enterprise (Topjava)

Стек проекта:


Программа


Первое открытое занятие: Spring Boot 2.x + Spring Data Rest with HATEOAS

  • Вступление
    • Что такое Spring-Boot. Первое приложение / Spring Initializr
    • Spring Boot maven plugin. Конвертация в WAR. Детали реализации
    • Настройка проекта
    • Проект Lombok
  • Работа с DB (H2, Spring Data JPA)
    • Spring Data JPA.
    • ApplicationRunner and CommandLineRunner.
    • Проблема N+1. Стратегии загрузки коллекций
    • Open Session In View Anti-Pattern
    • Подсоединение к базе приложения H2
    • H2 console. Start H2 TCP server
    • Loading Initial Data
    • Рефакторинг model
    • Spring Data JPA @Query
  • Spring Data REST + HATEOAS
    • Spring Data REST
    • HATEOAS. HAL
    • Добавление Vote + HATEOAS
    • Paging and ResourcesAssembler
  • Домашнее задание
    • Реализация Spring Data REST API администрирования
    • Optional: реализация REST API голосования за ресторан

Занятие 2

  • Разбор HW1
  • Spring Security with Boot
  • Конфигурирование: @Value, @ConfigurationProperties
  • Code completion for custom properties: configuration-processor
  • Тестирование
    • Mockito
    • AssertJ
    • Unit tests
    • Integration tests
  • Домашнее задание
    • Реализовать тесты Admin API и голосования
    • Optional: реализовать API показа меню

Занятие 3

  • Разбор HW2
  • Spring Data REST Projections and Excerpts
  • Actuator Endpoints
  • Actuator: информации о приложении
  • Cache providers, JCache. Реализация в памяти Caffeine
  • Подключаем Caffeine Application Cache
  • Подключаем Caffeine Hibernate Second-Level
  • Домашнее задание
    • Реализовать тесты для отображения меню
    • Optional: реализовать актуатор для бэкапа базы данных

Занятие 4

  • Разбор HW3
  • Документирование API: Swagger, Spring REST Docs
  • Авторизация JWT
  • Атворизация OAuth2. Реализация для GitHub
  • Свой spring-boot-starter
  • Домашнее задание
    • Сделать авторизацию OAuth2 через Google/ VK/ FB/ Yandex

Занятие 5

  • Разбор HW4
  • Thymeleaf 3. Реализация UI для входа в систему голосования
  • Spring Events. Хранение результатов голосования
  • Динамическое отображение на UI результатов голосования. Spring WebSocket
  • Домашнее задание
    • Реализация UI для отображения ресторанов
    • Optional: реализация UI голосования

Занятие 6

  • Разбор HW5
  • Прикрепление администраторов к ресторанам
  • Проверка прав. Hibernate Event Listeners