본문으로 건너뛰기
ElastiCORE 3.0 은 릴리스 후보(RC)입니다: Maven Central 의 3.0.261022-rc1. 2.2 라인 프로젝트는 2.2 문서를 보세요.
버전: 3.0

2.2 에서 올리기

버전만 바꾸면 됩니다​

build.gradle
- implementation      'io.elasticore:elasticore-base:2.2.260703'
+ implementation 'io.elasticore:elasticore-base:3.0.261022-rc1'

env.yml 도 build.gradle 도 모델 파일도 그대로 둡니다. 생성되는 소스 코드는 바뀌지 않습니다 - 2.x 의 결함을 고친 몇 곳만 다르고, 그 목록은 이력에 있습니다. 3.0 의 새 기능(DDD, 헥사고날, Kotlin, TypeScript)은 모두 선언해야 켜지고, 선언하지 않은 프로젝트는 2.x 와 같은 코드 경로를 탑니다.

풀 리퀘스트마다 확인합니다: 2.x 기준 프로젝트에 대해 규칙 엔진의 출력을 2.x 출력과 229개 파일 전부 비교합니다 (0 differ / 0 missing / 0 extra - 2.x 버그 수정으로 달라지는 4개는 이름을 정해 허용, 1개는 import 순서만 다름).

그래도 달라지는 것 (모두 버그 수정)​

2.x3.0할 일
schema.yml저장소 루트, 플랫폼 기본 인코딩(한글 Windows = MS949)자기 blueprint 옆, UTF-8루트의 옛 파일은 더 갱신되지 않으니 지움
일부 멀티 모듈 구성의 생성 코드저장소 루트로 새어 나감모델을 가진 모듈에 놓임루트의 정체 모를 생성 파일을 지움
DTOUtils.getMetaInfo(Class)raw type 경고getMetaInfo(Class<T>)없음 - 바이너리 시그니처가 같음
새 DSL 검증-DDD 문법(domainService, uses:)에만없음: 2.x 모델에는 그런 문법이 없어 -Pmode=valid CI 가 갑자기 실패하지 않음

손으로 고친 생성 파일은 2.x 처럼 보호됩니다: 내용 해시로 수정을 알아보고, // Initially generated by ElastiCORE; no longer managed 표시가 있는 파일은 처음 생성 이후 다시 쓰지 않습니다.

3.0 기능을 쓰고 싶다면 (선택)​

원할 때만 - 도메인 하나씩도 됩니다:

  1. build.gradle 에 architecture(와 language)를 적은 elasticore { } 블록을 더해 빌드를 규칙 엔진(elcore3)으로 바꿉니다:

    elasticore {
    architecture = 'hexagonal' // 또는 'ddd'
    language = 'java'
    }
  2. 도메인 하나만 다른 규칙을 쓰려면 그 env.yml 에 적습니다. 빌드가 규칙 엔진을 돌릴 때만 적용됩니다 - architecture·language·rules 를 적은 elasticore { } 블록, 또는 ./gradlew elcore3. 2.x 생성기는 무시합니다:

    elasticore:
    config:
    publisher:
    rules: [ddd-springboot]
번들주는 것
jpa-springboot예전과 같음 (선언하지 않은 것과 같음)
ddd-springboot애그리거트 경계, 불변식, 도메인 이벤트, 값 객체
hexagonal-springboot위 + 인바운드 포트, 헥사고날 패키지 배치
*-ktKotlin 판
ts-model브라우저용 DTO, enum, 타입 있는 REST 클라이언트
v3 의 like 는 대소문자를 무시합니다

v3 번들(헥사고날, DDD, -Pv3, 모든 Kotlin 빌드)에서 문자열 필드의 @search(like) 는 대소문자를 무시합니다(%__%). 2.x 처럼 구분하려면 @search(%_%) 로 바꿉니다.

되돌리려면 publisher.rules 줄(또는 블록)을 지웁니다. 3.0 이 남기는 상태는 없습니다 - 위에서 지운 옛 파일들만 2.x 로 돌아가면 다시 잘못된 위치에 생성됩니다.

Spring Boot 4​

3.0 은 Spring Boot 4 와 Spring AI 2.0 을 지원합니다(2.2 는 Spring Boot 3 까지). 런타임을 elasticore-springboot3 에서 elasticore-springboot4 로, Boot 플러그인을 4.x 로 바꾸면 ElastiCORE 가 버전을 읽어 enum 과 outbox 를 Jackson 3 에 맞게 씁니다. Spring Boot 3 과 4 참고.

자주 나오는 질문​

  • 한 번에 전부 바꿔야 하나요? 아니요 - publisher.rules 는 도메인별 설정입니다.
  • 멀티 모듈에서도 되나요? 됩니다: elasticore.modules 는 두 진입점 모두 지원하고, module:// 네임스페이스도 그대로입니다.
  • 롤백하려면? 버전을 되돌립니다.

2.2 문서는 그대로 남아 있습니다: ElastiCORE 2.2.