ВИДЕОУРОК №4. Разработка простого Web-приложения с использованием Spring Boot
На этом уроке предоставляется обзор курса. Рассматриваются основные типы баз данных, которые существуют и используются в разработке корпоративных приложений. Больше внимания уделяется реляционным СУБД работающих в архитектуре "Клиент-сервер" и поддерживаемых Spring Data. Главное внимание уделяется одной из самых распространенных СУБД - MySQL. Далее, рассматриваются уровни абстракции при доступе к данным и краткая историческая справка их появления и обретения популярности. Рассматривается взаимная связь механизмов доступа к данным. Проводится описание приложения "Записная книжка", которое будет разрабатываться на протяжении курса, и в режиме лайв-кодинга создаётся база данных для неё, что на первом этапе содержит одну таблицу и в дальнейших уроках будет расширена для хранения всех данных приложения.
На данном уроке происходит сравнительный анализ клиент-серверных СУБД, из которого ученики получат информацию о СУБД H2, которую удобно использовать для тестирования приложений из-за возможности ее работы в embedded mode и клиент-серверных СУБД PostreSQL и MySQL. Рассматриваются составные части таблиц в базе данных, понятие ключевых и неключевых полей и механизмы образования связей между таблицами путем использования внешних ключей. Рассматриваются ограничения на операции с данными в таблицах на основе внешних ключей. В режиме лайв-кодинга создаются связанные таблицы на сервере MySQL в среде IntelliJ IDEA.
В этом уроке главное внимание уделяется начальным шагам создания Spring Boot приложения. Рассматривается два варианта создания структуры проекта с помощью Spring Initializer: на странице https://start.spring.io и с помощью wizard в IntelliJ IDEA. Уделяется внимание настройке зависимостей и конфигурированию приложения. Рассматриваются файлы настроек приложения application.properties и application.yml - их структура и необходимые параметры настроек для приложения с использованием Spring Data. После этого, в режиме лайв-кодинга разрабатывается консольное приложение Spring Data, реализующее отображение тестовых данных, которые предварительно были загружены в таблицу базы данных "Записная книжка" на сервере MySQL.
Этот урок посвящен основам разработки web-приложений с использованием Spring Boot и шаблонизатора Thymeleaf. Рассматриваются зависимости, которые следует подключить при создании приложения (Spring Web, Thymeleaf, Lombok...). Проводится анализ структуры web-приложения в среде IntelliJ IDEA. Рассматриваются основные компоненты web-приложения в соответствии со стереотипами Controller, Service, Component. Особый акцент делается на понимании того, как web-приложение обрабатывает различные типы HTTP-запросов (GET, POST, PUT, DELETE...) с помощью аннотаций в классе контроллера. Рассматриваются основные теги для формирования web-элементов с использованием Thymeleaf. В режиме лайв-кодинга создается структура и основные компоненты: котроллеры, сервисы и страницы приложения.
Этот урок посвящен подключению Spring Data к web-приложению. Рассматривается использование основных типов Repository для взаимодействия с БД. Ученики овладеют знаниями о порядке создания методов контроллеров и сервисов для реализации CRUD-операций с таблицами в БД. Особое внимание уделяется вопросам настроек аннотаций в классах сущностей, описывающих связи между таблицами. Рассматривается проблема "N+1" при работе с БД с помощью JPA и пути её преодоления или минимизации её влияния. В режиме лайв-кодинга реализуются CRUD операции с таблицами БД.
В этом уроке главное внимание уделяется исключительным ситуациям (Exceptions), которые могут возникать при работе с Spring Data и тестированию приложений с использованием JUnit 5. Обосновывается создание собственных исключений для улучшения надежности, читабельности и управляемости кода в процессе обработки ошибок. Разбираются механизмы и библиотеки модульного тестирования приложений и различные типы тестов (тесты на равенство, неравенство, соответствие, параметризованные тесты). В режиме лайв-кодинга разрабатываются тесты для основных методов приложения.