Spring Boot 3 (2022) là bản major với breaking changes:
Yêu cầu tối thiểu:
- Java 17 (Boot 2: Java 8).
- Jakarta EE 10 (Boot 2: Java EE / javax.*)
Thay đổi lớn nhất — Jakarta namespace:
// Boot 2 (javax)
import javax.persistence.Entity;
import javax.validation.constraints.NotNull;
import javax.servlet.http.HttpServletRequest;
// Boot 3 (jakarta) — đổi tất cả import!
import jakarta.persistence.Entity;
import jakarta.validation.constraints.NotNull;
import jakarta.servlet.http.HttpServletRequest;Các thay đổi khác:
- Spring Security 6 — config DSL mới, Lambda-style mandatory.
- Actuator — /actuator/health response format thay đổi nhỏ.
- Spring Data — getOne() deprecated, dùng getReferenceById(); Pageable sort API nhỏ thay đổi.
- Auto-configuration — file spring.factories → AutoConfiguration.imports.
- AOT + Native Image support built-in.
- HTTP interface client (@HttpExchange) thay cho Feign/RestTemplate proxy.
- @ConstructorBinding không cần explicit (tự suy luận cho record).
Migration guide:
1. Nâng Java lên 17+.
2. Chạy sed -i 's/javax\./jakarta\./g' trên toàn bộ source — macOS/Linux; trên Windows dùng find-replace trong IDE (giữ nguyên javax.sql, javax.xml).
3. Update Security config sang Lambda DSL.
4. Kiểm tra deprecated API.
Vì sao migrate: Java 17 LTS performance tốt hơn, GraalVM Native Image, security cải thiện, long-term support.
Spring Boot 3 (2022) is a major version with breaking changes:
Minimum requirements:
- Java 17 (Boot 2: Java 8).
- Jakarta EE 10 (Boot 2: Java EE / javax.*)
Biggest change — Jakarta namespace:
// Boot 2 (javax)
import javax.persistence.Entity;
import javax.validation.constraints.NotNull;
import javax.servlet.http.HttpServletRequest;
// Boot 3 (jakarta) — change ALL imports!
import jakarta.persistence.Entity;
import jakarta.validation.constraints.NotNull;
import jakarta.servlet.http.HttpServletRequest;Other changes:
- Spring Security 6 — new config DSL, Lambda-style now mandatory.
- Actuator — /actuator/health response format has minor changes.
- Spring Data — getOne() deprecated, use getReferenceById(); minor Pageable sort API changes.
- Auto-configuration — spring.factories → AutoConfiguration.imports.
- AOT + Native Image support built in.
- HTTP interface client (@HttpExchange) replaces Feign/RestTemplate proxies.
- @ConstructorBinding no longer needed explicitly (inferred for records).
Migration steps:
1. Upgrade Java to 17+.
2. Run sed -i 's/javax\./jakarta\./g' across the source — macOS/Linux; on Windows use IDE find-replace (keep javax.sql, javax.xml as-is).
3. Update Security config to Lambda DSL.
4. Check deprecated APIs.
Why migrate: Java 17 LTS performance, GraalVM Native Image, security improvements, long-term support.