Фаза 4 – Фреймворки и веб-приложения (3–4 месяца)
Spring Boot, Spring Core и Spring Data JPA
- Spring Core: Внедрение зависимостей (
@Bean
,@Autowired
), IoC-контейнер. - Spring Boot: Автоконфигурация, стартеры (
spring-boot-starter-web
,spring-boot-starter-data-jpa
),application.yml
. - Spring Data JPA: Репозитории (
CrudRepository
,JpaRepository
), запросы с@Query
, пагинация. - Пример: Создание REST-эндпоинтов для управления задачами (CRUD) в приложении для задач.
Spring Security (JWT, OAuth2)
- Концепции: Аутентификация, авторизация, фильтры безопасности.
- JWT: Создание и проверка токенов, использование
JwtAuthenticationFilter
. - OAuth2: Настройка Resource Server, интеграция с провайдером (например, Google).
- Пример: Защита эндпоинтов задач с помощью JWT и ролей (
ADMIN
,USER
).
Юнит- и интеграционное тестирование
- Юнит-тесты: JUnit 5, Mockito (
@Mock
,@InjectMocks
), тестирование бизнес-логики. - Интеграционные тесты:
@SpringBootTest
,@WebMvcTest
, база данных H2 для тестирования. - Testcontainers: Тестирование с PostgreSQL в контейнерах Docker.
- Пример: Тестирование сервисов и эндпоинтов приложения для задач.
RESTful API и документация с Swagger
- REST: HTTP-методы, коды состояния, принципы RESTful.
- Spring REST:
@RestController
,@RequestMapping
,@PathVariable
. - Swagger: Настройка springdoc-openapi, аннотации с
@Operation
. - Пример: Документирование эндпоинтов приложения для задач с помощью Swagger UI.
Введение в GraphQL
- Концепции: Запросы, мутации, схема.
- Spring Boot с GraphQL: Настройка с spring-boot-starter-graphql.
- Пример: Создание GraphQL-запроса для получения списка задач по статусу.
Базовая интеграция фронтенда
- Thymeleaf: Шаблоны для рендеринга HTML-страниц с Spring Boot.
- Пример: Создание простого веб-интерфейса для просмотра и создания задач.
Инструменты сборки: Maven и Gradle
- Maven: Структура
pom.xml
, зависимости, плагины. - Gradle: Файл
build.gradle
, задачи, управление зависимостями. - Пример: Настройка приложения для задач с Maven и Gradle.
Развертывание проекта
- Платформы: Railway, Heroku, AWS (Elastic Beanstalk).
- Шаги: Упаковка в JAR, настройка CI/CD с GitHub Actions.
- Пример: Развертывание приложения для задач на Railway с PostgreSQL.
Финальный проект
Система управления задачами
- База данных: Таблицы Task
(заголовок, описание, статус) и User
(отношение 1:N).
- Java: REST API с Spring Boot, Spring Data JPA для CRUD.
- Безопасность: JWT-аутентификация, роли (ADMIN
, USER
).
- Тесты: Юнит-тесты (сервисы) и интеграционные тесты (эндпоинты с Testcontainers).
- Документация: Swagger UI с описанием эндпоинтов.
- Опционально: Добавление GraphQL-запроса для получения списка задач и интерфейса Thymeleaf для взаимодействия.
- Git: Коммиты для каждой функции (например, feature/rest-api
, feature/security
).
- Публикация: На GitHub с README (настройка, эндпоинты, развертывание).