본문으로 건너뛰기

코드 생성 원리

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 설정에 따라 생성되는 코드가 결정됩니다:

모드생성 항목
jpaEntity, DTO, Repository, Service, Controller
mongoMongoDB Document, Repository, Service
umlMermaid 다이어그램 (deprecated)
pxPX 플랫폼 연동 코드
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