Spring Boot 프로젝트 생성
워크플로우
1. 사용자에게 질문하기 (조건부 플로우)
프로젝트 생성 전 AskUserQuestion 도구로 다음을 확인. 한 번에 최대 4개 질문까지 가능하므로 관련 질문을 묶어서 진행.
Step 1: 기본 정보 (첫 번째 질문 세트)
질문 1: 프로그래밍 언어
- Java (Recommended) - Gradle Groovy DSL 사용
- Kotlin - Gradle Kotlin DSL 사용
질문 2: 프로젝트 유형
- REST API 서버
- 웹 애플리케이션 (MVC + 템플릿)
- AI 애플리케이션
- 배치 처리
- 마이크로서비스
Step 2: 유형별 추가 질문 (조건부)
REST API / 웹 애플리케이션 선택 시:
질문 3: 데이터베이스
- H2 (개발/테스트용, Recommended)
- PostgreSQL
- MySQL
- MongoDB
- 사용 안함
질문 4: 추가 기능 (multiSelect: true)
- Spring Security (인증/인가)
- API 문서 (SpringDoc OpenAPI)
- Actuator (모니터링)
AI 애플리케이션 선택 시:
질문 3: AI 모델 (LLM)
- OpenAI (ChatGPT, Recommended)
- Anthropic Claude
- Ollama (로컬 LLM)
- Azure OpenAI
- Amazon Bedrock
질문 4: RAG 구성
- 벡터 DB + 문서 리더 포함 (RAG 구축)
- 채팅 메모리만 (대화 기록 저장)
- LLM만 사용 (심플)
질문 5 (RAG 선택 시): 벡터 데이터베이스
- PGvector (PostgreSQL, Recommended)
- Chroma
- Redis
- Qdrant
- Milvus
마이크로서비스 선택 시:
질문 3: 인프라 구성 (multiSelect: true)
- Eureka (서비스 디스커버리)
- Config Server (외부 설정)
- Gateway (API 게이트웨이)
- Resilience4j (서킷 브레이커)
질문 4: 메시징
배치 처리 선택 시:
질문 3: 데이터 소스
- H2 (개발용, Recommended)
- PostgreSQL
- MySQL
질문 4: 스케줄링
- Quartz Scheduler 포함
- Spring @Scheduled만 사용
2. 프로젝트 이름 추천
용도에 따라 이름 제안:
- REST API:
user-api, order-service, product-api
- 웹 애플리케이션:
admin-portal, dashboard-app, web-shop
- AI 애플리케이션:
ai-assistant, chatbot-service, rag-search, doc-analyzer
- 배치:
data-batch, report-batch, sync-job
- 마이크로서비스:
auth-service, payment-service, notification-service
사용자가 원하면 직접 이름 입력 가능.
3. 프로젝트 생성
python3 scripts/create_project.py <프로젝트명> --lang <java|kotlin> --preset <프리셋> --output <경로>
자동 설정 (고정값)
| 항목 |
값 |
비고 |
| Spring Boot 버전 |
자동 선택 |
Spring AI 사용 시 3.x, 그 외 서버 기본값 |
| Java 버전 |
21 |
LTS |
| 패키징 |
JAR |
- |
| 설정 파일 |
application.yml |
properties → yml 자동 변환 |
| 빌드 도구 |
Gradle |
Java=Groovy DSL, Kotlin=Kotlin DSL |
Spring AI 버전 호환성
- Spring AI 1.x → Spring Boot 3.x와 호환
- Spring AI 2.x → Spring Boot 4.x와 호환
스크립트가 spring-ai-* 의존성을 감지하면 자동으로 호환되는 Spring Boot 버전을 선택합니다.
프리셋 선택 가이드
기본 프리셋
| 용도 |
추천 프리셋 |
포함 의존성 |
| REST API |
web-api |
web, validation, actuator, devtools |
| 웹 + DB |
web-jpa |
web, data-jpa, validation, h2, devtools |
| 보안 필요 |
web-security |
web, security, validation, devtools |
| 풀스택 |
full |
web, jpa, security, validation, actuator, h2, devtools, lombok |
| 리액티브 |
reactive |
webflux, data-r2dbc, validation, devtools |
| 배치 |
batch |
batch, data-jpa, h2, devtools |
AI 프리셋
| 용도 |
추천 프리셋 |
포함 의존성 |
| OpenAI 기반 |
ai-openai |
web, spring-ai-openai, devtools |
| Claude 기반 |
ai-anthropic |
web, spring-ai-anthropic, devtools |
| 로컬 LLM |
ai-ollama |
web, spring-ai-ollama, devtools |
| RAG 앱 |
ai-rag |
web, spring-ai-openai, spring-ai-vectordb-pgvector, spring-ai-pdf-document-reader, postgresql, devtools |
| 채팅봇 |
ai-chatbot |
web, spring-ai-openai, spring-ai-chat-memory-repository-jdbc, data-jpa, h2, devtools |
| MCP 서버 |
ai-mcp |
web, spring-ai-mcp-server, spring-ai-openai, devtools |
사용자 선택 → 의존성 매핑
질문 응답에 따라 프리셋 대신 --deps 옵션으로 직접 조합:
# 기본 구성
REST API + PostgreSQL + Security + OpenAPI
→ --deps web,validation,data-jpa,postgresql,security,springdoc-openapi,actuator,devtools
# AI 구성
AI (OpenAI) + RAG (PGvector)
→ --deps web,spring-ai-openai,spring-ai-vectordb-pgvector,spring-ai-pdf-document-reader,postgresql,devtools
# AI 구성 (Claude + 채팅 메모리)
→ --deps web,spring-ai-anthropic,spring-ai-chat-memory-repository-jdbc,data-jpa,h2,devtools
# 마이크로서비스
→ --deps web,cloud-eureka,cloud-config-client,cloud-openfeign,actuator,devtools
추가 옵션
| 옵션 |
설명 |
기본값 |
--group |
Group ID |
com.example |
--desc |
프로젝트 설명 |
Demo project for Spring Boot |
--deps |
커스텀 의존성 (쉼표 구분) |
- |
--boot / --bootVersion |
Spring Boot 버전 명시 (예: 3.5.0) |
자동 선택 |
--check-ai-version |
Spring AI 최신 버전 정보 확인 |
- |
Spring Boot 버전 지정
Spring AI와 함께 사용할 때 버전을 명시적으로 지정할 수 있습니다:
# Spring Boot 버전 명시
python3 scripts/create_project.py my-app --deps web,spring-ai-openai --boot 3.5.0
# Spring AI 버전 확인
python3 scripts/create_project.py --check-ai-version
예시
# Java REST API
python3 scripts/create_project.py user-api --lang java --preset web-api
# Kotlin 웹앱 + DB
python3 scripts/create_project.py admin-portal --lang kotlin --preset web-jpa
# 커스텀 의존성 (REST API + PostgreSQL + Security)
python3 scripts/create_project.py my-service --lang java --deps web,validation,data-jpa,postgresql,security,actuator,devtools
# AI 앱 - OpenAI (자동으로 호환 버전 선택)
python3 scripts/create_project.py ai-app --lang kotlin --deps web,spring-ai-openai,actuator,devtools
# AI 앱 - OpenAI RAG (프리셋 사용)
python3 scripts/create_project.py ai-assistant --lang java --preset ai-rag
# AI 앱 - Claude 채팅봇
python3 scripts/create_project.py claude-chatbot --lang java --deps web,spring-ai-anthropic,spring-ai-chat-memory-repository-jdbc,data-jpa,h2,devtools
# AI 앱 - Ollama 로컬 LLM
python3 scripts/create_project.py local-ai --lang java --preset ai-ollama
# 마이크로서비스 (Eureka + Kafka)
python3 scripts/create_project.py order-service --lang java --deps web,cloud-eureka,kafka,data-jpa,postgresql,actuator,devtools
# Spring Boot 버전 명시적 지정
python3 scripts/create_project.py my-app --lang java --deps web,data-jpa --boot 3.5.0
# Spring AI 최신 버전 확인
python3 scripts/create_project.py --check-ai-version
생성 후 실행
cd <프로젝트명>
./gradlew bootRun
의존성 참조
전체 의존성 목록: references/dependencies.md
1---2name: spring-boot-init3description: Spring Boot 프로젝트 초기 생성 스킬. start.spring.io API를 사용하여 프로젝트를 생성합니다. 사용 시점: (1) 새 Spring Boot 프로젝트 생성, (2) 스프링 부트 프로젝트 만들어줘, (3) Spring Boot로 API 서버 만들어줘, (4) 웹 애플리케이션 시작하고 싶어, (5) Spring Initializr 관련 요청4---56# Spring Boot 프로젝트 생성78## 워크플로우910### 1. 사용자에게 질문하기 (조건부 플로우)1112프로젝트 생성 전 AskUserQuestion 도구로 다음을 확인. **한 번에 최대 4개 질문까지 가능하므로 관련 질문을 묶어서 진행**.1314#### Step 1: 기본 정보 (첫 번째 질문 세트)1516**질문 1: 프로그래밍 언어**17- Java (Recommended) - Gradle Groovy DSL 사용18- Kotlin - Gradle Kotlin DSL 사용1920**질문 2: 프로젝트 유형**21- REST API 서버22- 웹 애플리케이션 (MVC + 템플릿)23- AI 애플리케이션24- 배치 처리25- 마이크로서비스2627#### Step 2: 유형별 추가 질문 (조건부)2829##### REST API / 웹 애플리케이션 선택 시:3031**질문 3: 데이터베이스**32- H2 (개발/테스트용, Recommended)33- PostgreSQL34- MySQL35- MongoDB36- 사용 안함3738**질문 4: 추가 기능** (multiSelect: true)39- Spring Security (인증/인가)40- API 문서 (SpringDoc OpenAPI)41- Actuator (모니터링)4243##### AI 애플리케이션 선택 시:4445**질문 3: AI 모델 (LLM)**46- OpenAI (ChatGPT, Recommended)47- Anthropic Claude48- Ollama (로컬 LLM)49- Azure OpenAI50- Amazon Bedrock5152**질문 4: RAG 구성**53- 벡터 DB + 문서 리더 포함 (RAG 구축)54- 채팅 메모리만 (대화 기록 저장)55- LLM만 사용 (심플)5657**질문 5 (RAG 선택 시): 벡터 데이터베이스**58- PGvector (PostgreSQL, Recommended)59- Chroma60- Redis61- Qdrant62- Milvus6364##### 마이크로서비스 선택 시:6566**질문 3: 인프라 구성** (multiSelect: true)67- Eureka (서비스 디스커버리)68- Config Server (외부 설정)69- Gateway (API 게이트웨이)70- Resilience4j (서킷 브레이커)7172**질문 4: 메시징**73- Kafka74- RabbitMQ75- 사용 안함7677##### 배치 처리 선택 시:7879**질문 3: 데이터 소스**80- H2 (개발용, Recommended)81- PostgreSQL82- MySQL8384**질문 4: 스케줄링**85- Quartz Scheduler 포함86- Spring @Scheduled만 사용8788### 2. 프로젝트 이름 추천8990용도에 따라 이름 제안:91- REST API: `user-api`, `order-service`, `product-api`92- 웹 애플리케이션: `admin-portal`, `dashboard-app`, `web-shop`93- AI 애플리케이션: `ai-assistant`, `chatbot-service`, `rag-search`, `doc-analyzer`94- 배치: `data-batch`, `report-batch`, `sync-job`95- 마이크로서비스: `auth-service`, `payment-service`, `notification-service`9697사용자가 원하면 직접 이름 입력 가능.9899### 3. 프로젝트 생성100101```bash102python3 scripts/create_project.py <프로젝트명> --lang <java|kotlin> --preset <프리셋> --output <경로>103```104105## 자동 설정 (고정값)106107| 항목 | 값 | 비고 |108|------|-----|------|109| Spring Boot 버전 | 자동 선택 | Spring AI 사용 시 3.x, 그 외 서버 기본값 |110| Java 버전 | 21 | LTS |111| 패키징 | JAR | - |112| 설정 파일 | application.yml | properties → yml 자동 변환 |113| 빌드 도구 | Gradle | Java=Groovy DSL, Kotlin=Kotlin DSL |114115### Spring AI 버전 호환성116117- **Spring AI 1.x** → Spring Boot 3.x와 호환118- **Spring AI 2.x** → Spring Boot 4.x와 호환119120스크립트가 `spring-ai-*` 의존성을 감지하면 자동으로 호환되는 Spring Boot 버전을 선택합니다.121122## 프리셋 선택 가이드123124### 기본 프리셋125126| 용도 | 추천 프리셋 | 포함 의존성 |127|------|------------|-------------|128| REST API | `web-api` | web, validation, actuator, devtools |129| 웹 + DB | `web-jpa` | web, data-jpa, validation, h2, devtools |130| 보안 필요 | `web-security` | web, security, validation, devtools |131| 풀스택 | `full` | web, jpa, security, validation, actuator, h2, devtools, lombok |132| 리액티브 | `reactive` | webflux, data-r2dbc, validation, devtools |133| 배치 | `batch` | batch, data-jpa, h2, devtools |134135### AI 프리셋136137| 용도 | 추천 프리셋 | 포함 의존성 |138|------|------------|-------------|139| OpenAI 기반 | `ai-openai` | web, spring-ai-openai, devtools |140| Claude 기반 | `ai-anthropic` | web, spring-ai-anthropic, devtools |141| 로컬 LLM | `ai-ollama` | web, spring-ai-ollama, devtools |142| RAG 앱 | `ai-rag` | web, spring-ai-openai, spring-ai-vectordb-pgvector, spring-ai-pdf-document-reader, postgresql, devtools |143| 채팅봇 | `ai-chatbot` | web, spring-ai-openai, spring-ai-chat-memory-repository-jdbc, data-jpa, h2, devtools |144| MCP 서버 | `ai-mcp` | web, spring-ai-mcp-server, spring-ai-openai, devtools |145146## 사용자 선택 → 의존성 매핑147148질문 응답에 따라 프리셋 대신 `--deps` 옵션으로 직접 조합:149150```151# 기본 구성152REST API + PostgreSQL + Security + OpenAPI153→ --deps web,validation,data-jpa,postgresql,security,springdoc-openapi,actuator,devtools154155# AI 구성156AI (OpenAI) + RAG (PGvector)157→ --deps web,spring-ai-openai,spring-ai-vectordb-pgvector,spring-ai-pdf-document-reader,postgresql,devtools158159# AI 구성 (Claude + 채팅 메모리)160→ --deps web,spring-ai-anthropic,spring-ai-chat-memory-repository-jdbc,data-jpa,h2,devtools161162# 마이크로서비스163→ --deps web,cloud-eureka,cloud-config-client,cloud-openfeign,actuator,devtools164```165166## 추가 옵션167168| 옵션 | 설명 | 기본값 |169|------|------|--------|170| `--group` | Group ID | com.example |171| `--desc` | 프로젝트 설명 | Demo project for Spring Boot |172| `--deps` | 커스텀 의존성 (쉼표 구분) | - |173| `--boot` / `--bootVersion` | Spring Boot 버전 명시 (예: 3.5.0) | 자동 선택 |174| `--check-ai-version` | Spring AI 최신 버전 정보 확인 | - |175176### Spring Boot 버전 지정177178Spring AI와 함께 사용할 때 버전을 명시적으로 지정할 수 있습니다:179180```bash181# Spring Boot 버전 명시182python3 scripts/create_project.py my-app --deps web,spring-ai-openai --boot 3.5.0183184# Spring AI 버전 확인185python3 scripts/create_project.py --check-ai-version186```187188## 예시189190```bash191# Java REST API192python3 scripts/create_project.py user-api --lang java --preset web-api193194# Kotlin 웹앱 + DB195python3 scripts/create_project.py admin-portal --lang kotlin --preset web-jpa196197# 커스텀 의존성 (REST API + PostgreSQL + Security)198python3 scripts/create_project.py my-service --lang java --deps web,validation,data-jpa,postgresql,security,actuator,devtools199200# AI 앱 - OpenAI (자동으로 호환 버전 선택)201python3 scripts/create_project.py ai-app --lang kotlin --deps web,spring-ai-openai,actuator,devtools202203# AI 앱 - OpenAI RAG (프리셋 사용)204python3 scripts/create_project.py ai-assistant --lang java --preset ai-rag205206# AI 앱 - Claude 채팅봇207python3 scripts/create_project.py claude-chatbot --lang java --deps web,spring-ai-anthropic,spring-ai-chat-memory-repository-jdbc,data-jpa,h2,devtools208209# AI 앱 - Ollama 로컬 LLM210python3 scripts/create_project.py local-ai --lang java --preset ai-ollama211212# 마이크로서비스 (Eureka + Kafka)213python3 scripts/create_project.py order-service --lang java --deps web,cloud-eureka,kafka,data-jpa,postgresql,actuator,devtools214215# Spring Boot 버전 명시적 지정216python3 scripts/create_project.py my-app --lang java --deps web,data-jpa --boot 3.5.0217218# Spring AI 최신 버전 확인219python3 scripts/create_project.py --check-ai-version220```221222## 생성 후 실행223224```bash225cd <프로젝트명>226./gradlew bootRun227```228229## 의존성 참조230231전체 의존성 목록: [references/dependencies.md](references/dependencies.md)