# 프로젝트 개요 ## 프로젝트 기본 정보 - 프로젝트 유형: Gradle 기반 Spring Boot 멀티모듈 모놀리식 - Java 버전: 21 - Spring Boot 버전: 3.5.10 - 저장소: 단일 Git 저장소 - 실행 서버: admin, front ## 모듈 구성 | 모듈 | 역할 | 실행 여부 | |---|---|---| | `01-api-core` | 공통 인프라, 공통 기능, 업무 모듈 | 실행하지 않음 | | `02-api-admin` | 관리자 API, 관리자 보안과 Swagger 설정 | `api-admin.jar` | | `03-api-front` | 사용자 API, 사용자 보안과 Swagger 설정 | `api-front.jar` | admin/front는 `01-api-core`에 의존하지만 서로 의존하지 않습니다. 각 bootJar에는 core 라이브러리가 포함되며, 다른 서버의 Controller는 물리적으로 포함되지 않습니다. ## 패키지 구조 ```text com.alist.api.core com.alist.api.admin com.alist.api.front ``` `core`는 다음 책임으로 나눕니다. - `common`: JWT, 예외, 응답, 페이징, 유틸과 같은 시스템 공통 기능 - `config`: DataSource, MyBatis, 공통 인프라 설정 - `modules.standard`: 재사용 가능한 표준 데이터 처리 - `modules.bespoke`: 기준 테이블의 업무 전용 JOIN·집계·특수 SQL 데이터 접근 `admin`과 `front`에는 Controller, 업무 Service, Form, 외부 응답 VO, 서버별 `SecurityConfig`, `OpenApiConfig`, 환경별 리소스를 둡니다. 업무 정책과 여러 core 호출의 조합, 트랜잭션 경계는 각 실행 모듈 Service가 소유합니다. admin과 front는 물리적으로 분리된 서버이므로 API path에 서버 구분 접두어를 중복하지 않습니다. 예를 들어 admin 인증 API는 `/admin/auth/login`이 아니라 `/auth/login`으로 둡니다. ## 현재 이관 상태 - 멀티모듈 Gradle 구조와 admin/front 개별 bootJar 구성이 완료되었습니다. - 공통 응답, 예외, JWT, DataSource, Mapper XML 리소스는 core로 이동했습니다. - 기존 admin/front 업무 API는 core standard/bespoke와 각 실행 모듈 Service 구조로 이관했습니다. - 단일 모듈 레거시 소스는 제거했으며, 이전 구현 이력은 Git history로 확인합니다. ## 기술 스택 - Java 21, Spring Boot 3.5.10, Gradle - MyBatis, MariaDB, SQL Server 마이그레이션 데이터소스 - Spring Security, JWT, Redis - Swagger / OpenAPI, Actuator, Lombok, Validation, log4jdbc ## 빌드 결과 ```text 02-api-admin/build/libs/api-admin.jar 03-api-front/build/libs/api-front.jar ```