91 lines
3.1 KiB
Markdown
91 lines
3.1 KiB
Markdown
# alist API
|
|
|
|
Gradle 기반 Spring Boot 멀티모듈 API 프로젝트입니다. 하나의 저장소에서 core 공통 기능과 admin/front 실행 서버를 함께 관리합니다.
|
|
|
|
## 모듈
|
|
|
|
```text
|
|
01-api-core 공통 인프라, 공통 기능, 업무 모듈 라이브러리
|
|
02-api-admin 관리자 API 실행 서버
|
|
03-api-front 사용자 API 실행 서버
|
|
```
|
|
|
|
- `01-api-core`는 단독 실행하지 않습니다.
|
|
- `02-api-admin`은 `api-admin.jar`를 생성합니다.
|
|
- `03-api-front`는 `api-front.jar`를 생성합니다.
|
|
- admin/front는 각각 core에 의존하며, 서로의 Controller를 포함하지 않습니다.
|
|
|
|
## 처음 보는 사람을 위한 구조
|
|
|
|
```text
|
|
HTTP 요청
|
|
-> admin/front Controller
|
|
-> admin/front 업무 Service
|
|
-> core standard 또는 bespoke Service
|
|
-> Mapper -> Mapper XML -> DB
|
|
```
|
|
|
|
- `admin`과 `front`는 각각 실행·배포되는 API 서버입니다.
|
|
- `core`는 실행하지 않는 공유 라이브러리이며, 공통 기능과 DB 접근 코드를 둡니다.
|
|
- 단일 테이블 SQL은 `standard`, 여러 테이블 JOIN이나 복합 SQL은 `bespoke`에 둡니다.
|
|
- Controller는 HTTP만, admin/front Service는 업무 흐름만, core는 데이터 접근만 담당합니다.
|
|
|
|
처음 참여했다면 [구조 한눈에 보기](docs/architecture-at-a-glance.md) -> [Core 모듈 설계](docs/core-module-design.md) -> [코드 컨벤션](docs/code-conventions.md) 순서로 읽습니다.
|
|
|
|
## 빌드와 실행
|
|
|
|
```bash
|
|
./gradlew :02-api-admin:bootJar
|
|
./gradlew :03-api-front:bootJar
|
|
```
|
|
|
|
빌드 결과:
|
|
|
|
```text
|
|
02-api-admin/build/libs/api-admin.jar
|
|
03-api-front/build/libs/api-front.jar
|
|
```
|
|
|
|
로컬 실행:
|
|
|
|
```bash
|
|
./gradlew :02-api-admin:bootRun --args='--spring.profiles.active=local'
|
|
./gradlew :03-api-front:bootRun --args='--spring.profiles.active=local'
|
|
```
|
|
|
|
Windows에서는 `./gradlew` 대신 `./gradlew.bat`를 사용합니다.
|
|
|
|
## 패키지 기준
|
|
|
|
```text
|
|
com.alist.api.core
|
|
com.alist.api.admin
|
|
com.alist.api.front
|
|
```
|
|
|
|
- `core.common`: JWT, 예외, 공통 응답, 유틸처럼 시스템 전반에서 사용하는 기능
|
|
- `core.config`: DataSource, MyBatis, 공통 인프라 설정
|
|
- `core.modules.standard`: 단일 테이블의 표준 조회·등록·수정·삭제
|
|
- `core.modules.bespoke`: 여러 테이블 JOIN, 집계, 복합 SQL 데이터 접근
|
|
- `admin`/`front`: Controller, Form, VO, 각 서버의 Security/OpenAPI 설정
|
|
|
|
상세 기준은 [Core 모듈 설계](docs/core-module-design.md)를 참고합니다.
|
|
|
|
## 기술 스택
|
|
|
|
- Java 21, Spring Boot 3.5.10, Gradle
|
|
- MyBatis, MariaDB, SQL Server 마이그레이션 데이터소스
|
|
- Spring Security, JWT, Redis
|
|
- Swagger / OpenAPI, Actuator, Lombok, Validation, log4jdbc
|
|
|
|
## 문서
|
|
|
|
- [프로젝트 개요](docs/project-overview.md)
|
|
- [구조 한눈에 보기](docs/architecture-at-a-glance.md)
|
|
- [Core 모듈 설계](docs/core-module-design.md)
|
|
- [코드 컨벤션](docs/code-conventions.md)
|
|
- [보안 및 응답 규칙](docs/security-and-response.md)
|
|
- [설정 및 실행 가이드](docs/runtime-config.md)
|
|
- [검증 및 체크리스트](docs/verification-checklist.md)
|
|
- [현재 코드베이스 메모](docs/codebase-notes.md)
|