티스토리 뷰

728x90

Spring Boot 3.x로 넘어오면서 가장 큰 변화 중 하나가 바로 javax.* → jakarta.* 패키지 변경입니다. 이건 단순한 이름 변경이 아니라, 마이그레이션 시 컴파일 에러런타임 이슈를 유발할 수 있기 때문에 매우 중요합니다.


☕ 배경 설명: 왜 javax에서 jakarta로 바뀌었을까?

  • javax.*는 원래 Oracle이 소유한 Java EE 패키지 네임스페이스입니다.
  • Java EE는 후에 Eclipse 재단으로 이관되었고, 이름도 Jakarta EE로 바뀌었습니다.
  • 하지만 Oracle이 javax 네임스페이스를 계속 소유하고 있어서, Eclipse 재단은 새로운 이름 jakarta를 사용해야만 했습니다.
  • 그래서 Spring Framework 6 & Spring Boot 3부터는 모든 관련 의존성이 jakarta.*로 변경되었습니다.

✅ 주요 변경 예시

Java EE API  변경 전 (Spring Boot 2.x 이하)  변경 후 (Spring Boot 3.x 이상)
Servlet API javax.servlet.* jakarta.servlet.*
JPA javax.persistence.* jakarta.persistence.*
Bean Validation javax.validation.* jakarta.validation.*
JAXB javax.xml.bind.* jakarta.xml.bind.*

🔧 예제 코드 비교

Spring Boot 2.x (javax)

import javax.validation.constraints.NotBlank;

public class UserDto {
    @NotBlank
    private String username;
}

Spring Boot 3.x (jakarta)

import jakarta.validation.constraints.NotBlank;

public class UserDto {
    @NotBlank
    private String username;
}

🔁 마이그레이션 팁

1. Gradle 의존성 체크

Spring Boot 3.x에서는 다음처럼 의존성 버전도 맞춰야 합니다:

dependencies {
    implementation 'jakarta.validation:jakarta.validation-api:3.0.2'
    implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0'
}

대부분은 spring-boot-starter-*가 자동으로 포함해주지만, 직접 사용하는 경우 확인이 필요합니다.


2. IDE 자동 변경 (IntelliJ 기준)

  • Find and Replace 혹은 Replace Structurally 기능을 사용하면 javax. → jakarta.로 쉽게 일괄 변경할 수 있습니다.

3. 주의할 점

  • 단순히 import만 바꾼다고 끝나는 게 아니라, 해당 API 버전 자체가 바뀌었기 때문에 일부 동작 방식도 달라질 수 있습니다.
  • 특히 JPA, Validation, JAXB 등을 직접 사용하는 경우 라이브러리 호환성을 꼭 확인해야 합니다.

📌 정리

 

항목  변경 내용
네임스페이스 javax.* → jakarta.*
적용 버전 Spring Framework 6 / Spring Boot 3 이상
영향 범위 JPA, Validation, Servlet 등 Java EE 관련 전반
마이그레이션 시 주의 import 변경 + 라이브러리 호환성 확인 필요

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함