코드 생성 원리
Overview
ElastiCORE는 DSL(model/*.yml) 정의를 기반으로 완전한 Spring Boot 애플리케이션 코드를 자동 생성합니다.
Code Generation Command
./gradlew elcore
이 명령은 DSL 정의를 파싱하여 다음 코드를 자동 생성합니다:
- Entity: JPA 엔티티 클래스
- DTO: 데이터 전송 객체
- Repository: Spring Data JPA 리포지토리
- Service: 서비스 레이어
- Controller: REST API 컨트롤러 (
@expose사용 시) - SearchDTO: 검색 조건 DTO (
@expose,@service,@searchable사용 시) - Q 클래스: Specification 기반 동적 쿼리
- Port Interface: 외부 시스템 통신 인터페이스
- Test Code: JUnit 5 기반 단위 테스트 (
testCode.enabled: true설정 시)
Generation Process
1. DSL 파싱
blueprint/{domain}/*.yml 파일 읽기
↓
2. 모델 검증
문법 검증, 참조 무결성 확인
↓
3. 코드 생성
템플릿 엔진으로 Java 소스 생성
↓
4. 파일 출력
namespace 설정에 따른 패키지 경로에 파일 생성
Generation Modes
env.yml의 mode 설정에 따라 생성되는 코드가 결정됩니다:
| 모드 | 생성 항목 |
|---|---|
jpa | Entity, DTO, Repository, Service, Controller |
mongo | MongoDB Document, Repository, Service |
uml | Mermaid 다이어그램 (deprecated) |
px | PX 플랫폼 연동 코드 |
config:
mode: jpa # JPA 모드
# mode: jpa,uml # 복수 모드 가능
Regeneration Rules
한 번만 생성 (기본)
생성된 파일에 마커 주석이 포함되어 있으면 재생성하지 않습니다:
/*
* No longer managed by ElastiCORE. You may modify as needed,
* but retain the marker for traceability.
*/
강제 재생성
파일을 삭제한 후 ./gradlew elcore를 실행하면 재생성됩니다.
팁
재생성이 필요한 경우, 기존 파일을 반드시 백업한 후 삭제하세요. 커스텀 코드가 유실될 수 있습니다.
Next Steps
- 프로젝트 구조 - 생성되는 파일 구조 이해
- 생성 코드 수정 방법 - 생성된 코드 수정 가이드
- 커스터마이징 - 블록 코멘트를 활용한 커스터마이징