Это проект я делала на курсе от яндекса, мне он очень понравился, так что показываю вам именно его. Я доработала по темам курса, вроде все хорошо
Для удобства яндекс встраивает в проекты готовые постман тесты, так что можете прочекать, что проект работает :) Некоторые из них полетели после моих вмешательств, но в целом ничего страшного, просто яндекс требует строгую структуру возврата, которая упала после того, как я добавила слушателя и событие
Ниже чуть более формальное описание проекта
ShareIt — это Spring Boot приложение, реализующее платформу для шеринга вещей. Пользователи могут:
- Регистрироваться и управлять своими профилями
- Создавать, обновлять и удалять предметы, доступные для аренды
- Создавать запросы на аренду предметов
- Бронировать предметы, просматривать и управлять бронированиями
- Оставлять комментарии к предметам после завершения бронирования
Проект разделен на два основных модуля:
- ShareIt Gateway (
ShareItGatewayApp) — отвечает за обработку HTTP-запросов и маршрутизацию к основному сервису - ShareIt Core (
ShareItApp) — содержит бизнес-логику, работу с базой данных и REST API
- Spring Boot: Основа приложения, включая модули Spring Web, Spring Data JPA, Spring Validation
- Jakarta Validation: Для валидации входных данных
- SLF4J: Для логирования
- RestTemplate: Для взаимодействия между сервисами
- Lombok: Для сокращения шаблонного кода (геттеры, сеттеры, конструкторы)
- Jackson: Для сериализации/десериализации JSON
Проект охватывает следующие аспекты Spring Boot:
- Внедрение зависимостей: Используется через
@Autowired,@RequiredArgsConstructorи конструкторное внедрение - Веб-сервисы: Реализованы RESTful API с использованием
@RestControllerи@Controller - Валидация и интернационализация: Валидация через аннотации (
@NotNull,@NotBlank,@Email), интернационализация черезMessageSourceи файлы сообщений - Работа с базой данных: Используется Spring Data JPA с репозиториями для сущностей (
User,Item,Booking,Comment,ItemRequest) - События и слушатели: Реализована публикация событий (
BookingCreatedEvent) черезApplicationEventPublisher - Конфигурация: Настройка через
@Configuration(например,MessageConfig) - Аспекты: реализация через
@RestControllerAdviceдля обработки исключений - Обслуживание: Логирование через SLF4J и обработка ошибок через
GlobalExceptionHandler
- Модули:
ShareItGatewayApp: Шлюз для обработки HTTP-запросов и маршрутизацииShareItApp: Основной сервис с бизнес-логикой и базой данных
- Основные пакеты:
ru.practicum.shareit.user: Управление пользователями (создание, обновление, удаление)ru.practicum.shareit.item: Управление предметами (создание, обновление, поиск, комментарии)ru.practicum.shareit.booking: Управление бронированиями (создание, обновление статуса, просмотр)ru.practicum.shareit.request: Управление запросами на предметыru.practicum.shareit.exception: Обработка ошибок и исключенийru.practicum.shareit.config: Конфигурация приложения (например, интернационализация)
В проекте интегрированы Postman тесты, которые проверяют основные сценарии работы приложения:
- Создание пользователей (
POST /users) - Создание и получение предметов (
POST /items,GET /items/{id}) - Создание и управление бронированиями (
POST /bookings,GET /bookings/{id},PATCH /bookings/{id}) - Проверка ошибок, таких как доступ к бронированиям от некорректного пользователя (
GET /bookings/ownerс невернымuserId) - Валидация полей в ответах (например,
start,end,status,booker.id,item.id)
Тесты подтверждают корректность работы API, валидацию данных и обработку ошибок, так что можете не тыкать все вручную