Ответ
В последнем проекте (backend-сервис на Java) использовался следующий стек технологий:
Базовый стек:
- Backend Framework: Spring Boot 2.x
- ORM: Hibernate (через Spring Data JPA)
- База данных: PostgreSQL (основная), Redis (кэш и сессии)
- Сборка: Maven
- Контейнеризация: Docker, Docker Compose
Основные модули и библиотеки:
- Spring Security — для аутентификации (JWT) и авторизации.
- Spring Web — построение REST API.
- Spring Kafka / RabbitMQ — асинхронная обработка событий и межсервисное взаимодействие.
- Lombok — для сокращения шаблонного кода (геттеры, сеттеры, конструкторы).
- MapStruct — для маппинга между DTO и сущностями.
- Swagger (SpringDoc OpenAPI) — для автоматической генерации документации API.
Тестирование:
- JUnit 5 & Mockito — модульные и интеграционные тесты.
- Testcontainers — для поднятия изолированных зависимостей (БД, Kafka) в тестах.
Пример слоя контроллера:
@RestController
@RequestMapping("/api/v1/users")
@RequiredArgsConstructor // Lombok генерирует конструктор
@Tag(name = "Users", description = "API для управления пользователями") // Swagger
public class UserController {
private final UserService userService;
@GetMapping("/{id}")
@Operation(summary = "Получить пользователя по ID") // Swagger
public ResponseEntity<UserResponseDto> getUser(@PathVariable Long id) {
UserResponseDto user = userService.getUserById(id);
return ResponseEntity.ok(user);
}
}
Инфраструктура: Сервис разворачивался в Kubernetes, использовались GitLab CI/CD для пайплайнов.