본문으로 건너뛰기

코드 생성 원리

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​