Skip to content

axma331/ExecutionTimeTracking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система учета времени выполнения методов

Данное приложение реализует систему для отслеживания времени выполнения методов с использованием Spring AOP, включая синхронную и асинхронную обработку. Система логирует данные в базу данных и предоставляет REST API для получения статистики.

Технологии

Проект использует следующие технологии и инструменты:

Java Maven Spring Postgres Liquibase GitHub

  • Язык программирования: 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

Шаги установки

  1. Клонируйте репозиторий:
git clone https://github.com/axma331/execution_time_tracking.git
  1. Перейдите в директорию проекта:
cd your-repo
  1. Настройте базу данных в файле application.properties`:
spring.datasource.url=jdbc:postgresql://localhost:5432/yourdatabase
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
  1. Запустите приложение с помощью Maven:
mvn spring-boot:run

Миграции базы данных

Liquibase автоматически применит необходимые миграции при запуске приложения.

Документация API

После запуска приложения документация API доступна по следующему URL:

http://localhost:8005/swagger-ui/

В Swagger UI вы можете просматривать и тестировать все доступные конечные точки.

Пример тестирования API через Swagger UI
  1. Открытие Swagger UI:

    После запуска приложения, откройте браузер и перейдите по адресу http://localhost:8005/swagger-ui/. Вы увидите страницу с доступными API.

    Swagger UI Home

  2. Просмотр доступных API:

    На главной странице Swagger UI вы увидите список всех доступных конечных точек. Каждая конечная точка имеет описание и параметры запроса.

    Swagger UI API Endpoints

  3. Тестирование API:

    Подготовка данных

    Для тестирования, предварительно сгенерируйте тестовые данные используя endpoint /api/test/execute. Разверните соответствующую секцию и нажмите кнопку "Try it out". Затем нажмите "Execute".

    Примеры ответов:

    • 200 - при генерации данных без принудительного прерывания работы тестового метод

      Testing API 1

    • 500 - при генерации данных с принудительного прерывания работы тестового метода Testing API 2

      Тестирование получения статистики

      Для тестирования конечной точки, разверните соответствующую секцию и нажмите кнопку "Try it out". Затем введите необходимые параметры и нажмите "Execute".

      Пример тестирования API для получения статистики:

      Testing API

  4. Результат выполнения запроса:

    После выполнения запроса вы увидите результат в формате JSON. Также отобразится информация о статусе запроса и заголовках ответа.

    API Response

Примеры использования

Вот несколько примеров использования API для получения статистики времени выполнения методов:

  • Получение всей статистики:
    GET /v1/statistics
  • Получение имен методов с идентификатором:
    GET /v1/statistics/method
  • Получение статистики по ID:
    GET /v1/statistics/method/{methodId}
  • Получение статистики по группе методов:
    GET /v1/statistics//group/{group}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages