Ответ
Да, последний проект был веб-приложением с полным стеком (full-stack), построенным по принципам RESTful API.
Архитектура и пример кода: Приложение следовало многослойной архитектуре (Controller-Service-Repository).
// Контроллер (Слой представления)
@RestController
@RequestMapping("/api/tasks")
public class TaskController {
private final TaskService taskService;
@GetMapping
public ResponseEntity<Page<TaskDTO>> getTasks(Pageable pageable) {
return ResponseEntity.ok(taskService.getAllTasks(pageable));
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public TaskDTO createTask(@Valid @RequestBody TaskCreateDTO dto) {
return taskService.createTask(dto);
}
}
// Сервис (Бизнес-логика)
@Service
@Transactional
@RequiredArgsConstructor
public class TaskService {
private final TaskRepository taskRepository;
private final UserService userService;
public TaskDTO createTask(TaskCreateDTO dto) {
User assignee = userService.findById(dto.getAssigneeId());
Task task = new Task(dto.getTitle(), dto.getDescription(), assignee);
task = taskRepository.save(task);
return TaskMapper.INSTANCE.toDTO(task); // Используем MapStruct
}
}
Технологический стек:
- Backend: Spring Boot, Spring Security (JWT-аутентификация), Hibernate, PostgreSQL.
- Frontend: Single Page Application (SPA) на современном фреймворке.
- Деплой: Приложение было упаковано в Docker-контейнеры, оркестрировалось с помощью Kubernetes, а для балансировки нагрузки использовался Nginx как reverse proxy.