2.2 에서 올리기
버전만 바꾸면 됩니다
- 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.x | 3.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 기능을 쓰고 싶다면 (선택)
원할 때만 - 도메인 하나씩도 됩니다:
-
build.gradle에architecture(와language)를 적은elasticore { }블록을 더해 빌드를 규칙 엔진(elcore3)으로 바꿉니다:elasticore {
architecture = 'hexagonal' // 또는 'ddd'
language = 'java'
} -
도메인 하나만 다른 규칙을 쓰려면 그
env.yml에 적습니다. 빌드가 규칙 엔진을 돌릴 때만 적용됩니다 -architecture·language·rules를 적은elasticore { }블록, 또는./gradlew elcore3. 2.x 생성기는 무시합니다:elasticore:
config:
publisher:
rules: [ddd-springboot]
| 번들 | 주는 것 |
|---|---|
jpa-springboot | 예전과 같음 (선언하지 않은 것과 같음) |
ddd-springboot | 애그리거트 경계, 불변식, 도메인 이벤트, 값 객체 |
hexagonal-springboot | 위 + 인바운드 포트, 헥사고날 패키지 배치 |
*-kt | Kotlin 판 |
ts-model | 브라우저용 DTO, enum, 타입 있는 REST 클라이언트 |
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.