Данное приложение реализует систему для отслеживания времени выполнения методов с использованием Spring AOP, включая синхронную и асинхронную обработку. Система логирует данные в базу данных и предоставляет REST API для получения статистики.
Проект использует следующие технологии и инструменты:
- Язык программирования: Java 17
- Автоматизация сборки: Maven
- Фреймворк: Spring
- База данных: PostgreSQL
- Миграция данных: Liquibase
- Контроль версий: Git
Полный текст задания
Задание: Реализация системы учета времени выполнения методовОписание: Вам предстоит разработать систему учета времени выполнения методов в приложении с использованием Spring AOP. Система должна быть способна асинхронно логировать и анализировать данные о времени выполнения методов.
Требования:
Создайте аннотации @TrackTime и @TrackAsyncTime, которые можно применять к методам для отслеживания времени их выполнения. Реализуйте аспекты, используя Spring AOP, для асинхронного и синхронного отслеживания времени выполнения методов, помеченных соответствующими аннотациями. Создайте сервис, который будет асинхронно сохранять данные о времени выполнения методов в базе данных. Реализуйте REST API для получения статистики по времени выполнения методов (например, среднее время выполнения, общее время выполнения) для различных методов и их групп. Настройте приложение с помощью конфигурации Spring для включения использования AOP и асинхронной обработки данных.
Критерии оценки:
Реализация аспектов: Правильное применение Spring AOP для создания аспектов. Корректное определение точек среза для методов, помеченных аннотациями @TrackTime и @TrackAsyncTime. Обработка исключений и ошибок в аспектах.
Обработка асинхронных вызовов: Асинхронное отслеживание времени выполнения методов, помеченных аннотацией @TrackAsyncTime. Корректная обработка результатов асинхронных операций.
Хранение и анализ данных: Реализация сервиса для асинхронного сохранения данных о времени выполнения методов в базе данных. Корректное хранение данных в базе данных. Реализация механизма анализа данных для получения статистики по времени выполнения методов.
REST API: Создание REST API для получения статистики по времени выполнения методов. Корректная обработка запросов и передача данных в формате JSON. Документация API.
Качество кода и архитектура: Чистота, читаемость и модульность кода. Соблюдение принципов SOLID и других принципов проектирования. Правильное использование паттернов проектирования.
Убедитесь, что у вас установлены следующие инструменты:
- Java 17
- Maven
- PostgreSQL
- Клонируйте репозиторий:
git clone https://github.com/axma331/execution_time_tracking.git
- Перейдите в директорию проекта:
cd your-repo
- Настройте базу данных в файле application.properties`:
spring.datasource.url=jdbc:postgresql://localhost:5432/yourdatabase
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
- Запустите приложение с помощью Maven:
mvn spring-boot:run
Liquibase автоматически применит необходимые миграции при запуске приложения.
После запуска приложения документация API доступна по следующему URL:
http://localhost:8005/swagger-ui/
Пример тестирования API через Swagger UI
-
Открытие Swagger UI:
После запуска приложения, откройте браузер и перейдите по адресу
http://localhost:8005/swagger-ui/
. Вы увидите страницу с доступными API. -
Просмотр доступных API:
На главной странице Swagger UI вы увидите список всех доступных конечных точек. Каждая конечная точка имеет описание и параметры запроса.
-
Тестирование API:
Подготовка данных
Для тестирования, предварительно сгенерируйте тестовые данные используя endpoint
/api/test/execute
. Разверните соответствующую секцию и нажмите кнопку "Try it out". Затем нажмите "Execute".Примеры ответов:
-
200 - при генерации данных без принудительного прерывания работы тестового метод
-
500 - при генерации данных с принудительного прерывания работы тестового метода
Тестирование получения статистики
Для тестирования конечной точки, разверните соответствующую секцию и нажмите кнопку "Try it out". Затем введите необходимые параметры и нажмите "Execute".
Пример тестирования API для получения статистики:
-
-
Результат выполнения запроса:
После выполнения запроса вы увидите результат в формате JSON. Также отобразится информация о статусе запроса и заголовках ответа.
Вот несколько примеров использования API для получения статистики времени выполнения методов:
- Получение всей статистики:
GET /v1/statistics
- Получение имен методов с идентификатором:
GET /v1/statistics/method
- Получение статистики по ID:
GET /v1/statistics/method/{methodId}
- Получение статистики по группе методов:
GET /v1/statistics//group/{group}