Task Manager — это простое приложение для управления задачами с использованием Spring Boot, PostgreSQL, Liquibase и многопоточности. Это RESTful API позволяет создавать, обновлять, удалять и просматривать задачи.
- Описание проекта
- Технологии
- Настройка проекта
- Запуск приложения
- API документация
- Миграции базы данных
- Логирование
- Дополнительные возможности
- Лицензия
Task Manager — это консольное приложение для управления задачами, которое предоставляет следующие функции:
- Создание, обновление, удаление и просмотр задач.
- Установка дедлайнов и статусов задач.
- Хранение данных в PostgreSQL.
- Использование Liquibase для миграций базы данных.
- Поддержка многопоточности для фоновых задач (например, проверка просроченных задач).
Проект использует следующие технологии:
- Java 21: Язык программирования.
- Spring Boot 3.x: Фреймворк для создания REST API.
- Spring Data JPA: Для работы с базой данных через Hibernate.
- PostgreSQL: Реляционная база данных.
- Liquibase: Инструмент для управления миграциями базы данных.
- Lombok: Для автоматической генерации геттеров/сеттеров.
- Docker: Для развертывания PostgreSQL.
- Maven: Для управления зависимостями.
- Java 21 или выше.
- Maven для сборки проекта.
- Docker для запуска PostgreSQL.
Запустите PostgreSQL в Docker:
docker compose up -d
Склонируйте репозиторий на вашу локальную машину:
git clone https://github.com/livevasiliy/spring-task-manager.git
cd spring-task-manager
Убедитесь, что файл src/main/resources/application.properties
содержит правильные настройки для подключения к PostgreSQL:
# Настройки сервера
server.port=8080
# Настройки PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost:5432/task_manager
spring.datasource.username=homestead
spring.datasource.password=password
spring.datasource.driver-class-name=org.postgresql.Driver
# Настройки JPA
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
# Настройки Liquibase
spring.liquibase.change-log=classpath:db/changelog/master.xml
Выполните сборку проекта с помощью Maven:
./mvnw clean install
Запустите приложение:
./mvnw spring-boot:run
Приложение будет доступно по адресу: http://localhost:8080
.
API предоставляет следующие эндпоинты:
GET /api/tasks
POST /api/tasks
Content-Type: application/json
{
"title": "Learn Spring Boot",
"description": "Complete the first project",
"dueDate": "2023-12-01",
"status": "TODO"
}
GET /api/tasks/{id}
PUT /api/tasks/{id}
Content-Type: application/json
{
"title": "Learn Spring Boot and Liquibase",
"description": "Complete the first project with database migrations",
"dueDate": "2023-12-01",
"status": "IN_PROGRESS"
}
DELETE /api/tasks/{id}
Миграции базы данных управляются с помощью Liquibase. Все миграции находятся в папке src/main/resources/db/changelog
.
Пример файла миграции (21-01-changelog.xml
):
<changeSet id="1" author="livevasiliy">
<createTable tableName="tasks">
<column name="id" type="BIGINT" autoIncrement="true">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="title" type="VARCHAR(255)">
<constraints nullable="false"/>
</column>
<column name="description" type="TEXT"/>
<column name="due_date" type="DATE"/>
<column name="status" type="VARCHAR(50)">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
Для локального окружения включено логирование Liquibase. Вы можете настроить уровень логирования в application.properties
:
logging.level.liquibase=DEBUG
logging.level.org.hibernate.SQL=DEBUG
- Многопоточность: Фоновая проверка просроченных задач с использованием
@Scheduled
. - Swagger/OpenAPI: Swagger для документации API.
- CI/CD: CI/CD pipeline с использованием GitHub Actions.
- Тесты: Unit-тесты и Feature для сервисов и контроллеров.
Этот проект распространяется под лицензией MIT. Подробнее см. файл LICENSE.