여러 전시 사이트를 하나의 플랫폼으로 운영하기 위한 Spring Boot 백엔드입니다.
SRS(srs.md) 기준으로 전시/카테고리/항목/분류/미디어를 관리하는 API를 제공합니다.
- 목적: 다중 전시(테넌트형) 운영을 위한 통합 API 제공
- 핵심 도메인:
exhibition,category,item,classification,media - 기술 스택: Java 17, Spring Boot 4, Spring Data JPA, QueryDSL, MySQL, MinIO
- 문서화: Spring REST Docs + Asciidoctor
- 구조: 도메인별 패키지 + 공통 모듈(
global) 분리
- 전시 서비스 CRUD
- 전시별 계층형 카테고리 트리 관리
- 카테고리 내 항목(작품/게시물) CRUD 및 조회
- 항목 분류(Classification) 부여/조회
- MinIO 기반 미디어 업로드/조회
- 관리자 API 중심의 운영 기능
현재 src/main/resources/application.yml 기준으로 아래 환경변수를 사용합니다.
| 변수명 | 기본값 | 설명 |
|---|---|---|
SPRING_DATASOURCE_URL |
jdbc:mysql://localhost:3306/exhibition?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC |
MySQL JDBC URL |
SPRING_DATASOURCE_USERNAME |
root |
MySQL 사용자명 |
SPRING_DATASOURCE_PASSWORD |
root |
MySQL 비밀번호 |
MINIO_ENDPOINT |
http://localhost |
MinIO 엔드포인트(스킴+호스트) |
MINIO_PORT |
9000 |
MinIO 포트 |
MINIO_ACCESS_KEY |
minioadmin |
MinIO Access Key |
MINIO_SECRET_KEY |
minioadmin |
MinIO Secret Key |
MINIO_BUCKET |
exhibition |
MinIO 버킷명 |
참고:
- Spring Boot는
spring.datasource.url이 필요하므로SPRING_DATASOURCE_URL을 반드시 설정해야 합니다. - 테스트는
src/test/resources/application.yml의 H2 in-memory DB 설정을 사용합니다.
- MySQL 실행 (DB:
exhibition) - MinIO 실행 및 버킷(
exhibition) 생성
export SPRING_DATASOURCE_URL='jdbc:mysql://localhost:3306/exhibition?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC'
export SPRING_DATASOURCE_USERNAME=root
export SPRING_DATASOURCE_PASSWORD=root
export MINIO_ENDPOINT=http://localhost
export MINIO_PORT=9000
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
export MINIO_BUCKET=exhibition./gradlew bootRun기본 포트는 Spring Boot 기본값(8080)입니다.
./gradlew test asciidoctor생성된 문서:
build/docs/asciidoc/index.html
- 요구사항 명세:
srs.md - 빌드 설정:
build.gradle - 실행 설정:
src/main/resources/application.yml - 테스트 설정:
src/test/resources/application.yml