티스토리 뷰
🎯 서론
Spring Boot는 Java 기반의 웹 애플리케이션 개발을 쉽고 빠르게 할 수 있도록 도와주는 강력한 프레임워크입니다.
🌟 2022년 말 Spring Boot 3.0이 출시된 이후, 현재 2025년까지 꾸준한 업데이트가 이루어졌으며, Spring Boot 2.x에서 3.x로 업그레이드하면서 많은 변화가 있었습니다.
🔥 이번 포스팅에서는 Spring Boot 3.x와 2.x의 차이점을 비교하고,
✅ 기존 프로젝트를 Spring Boot 3.x로 업그레이드하는 방법을 초보자도 쉽게 따라 할 수 있도록 자세히 설명하겠습니다!
📌 1. 주요 변경 사항 한눈에 보기
⚡ 변경 사항🏛 Spring Boot 2.x🚀 Spring Boot 3.x
🔧 Java 지원 버전 | Java 8, 11, 17 | Java 17 이상 (Java 21 권장) |
📦 패키지 변경 | javax 패키지 사용 | jakarta 패키지 사용 |
🔐 Spring Security | WebSecurityConfigurerAdapter 사용 | SecurityFilterChain 사용 |
🌐 네이티브 이미지 | 미지원 | GraalVM 네이티브 이미지 지원 |
⚙ API 변경 | 일부 메서드, 설정 변경 | 최신 버전에 맞게 리팩토링 필요 |
📊 Observability | ❌ 기본 미지원 | ✅ Micrometer & OpenTelemetry 지원 |
📌 요약:
💡 Java 17 이상 필요, javax → jakarta 변경, Spring Security 설정 방식 변경,
🔥 GraalVM 네이티브 이미지 지원으로 실행 속도 최적화!
🏗 2. Java 버전 업그레이드 (Java 17 이상 필요!)
⚠ Spring Boot 3.x는 Java 17 이상이 필수!
Java 8, 11, 16을 사용 중이라면 먼저 Java 17 또는 21로 업그레이드하세요!
✅ Java 버전 확인 방법
java -version
📢 결과가 다음과 같이 나와야 합니다.
openjdk version "17.0.8" 2025-01-01
📌 Java 8이나 11이 표시된다면, Java 17 이상으로 업그레이드하세요!
💻 Java 17 설치 (Mac)
brew install openjdk@17
🖥 Java 17 설치 (Windows)
🔗 OpenJDK 다운로드에서 최신 LTS 버전(Java 17 or 21)을 다운로드하고 설치하세요.
🔄 3. javax → jakarta 패키지 변경 (중요!)
Spring Boot 3.x에서는 Jakarta EE 10을 사용하여 기존 javax 패키지가 jakarta로 변경되었습니다.
🔽 변경 전 (Spring Boot 2.x)
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private Long id;
private String name;
}
🔼 변경 후 (Spring Boot 3.x)
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
@Entity
public class User {
@Id
private Long id;
private String name;
}
✅ 해야 할 일:
🛠 코드에서 javax 패키지를 찾아 모두 jakarta로 변경하세요!
🔐 4. Spring Security 변경 (WebSecurityConfigurerAdapter 제거됨!)
Spring Boot 3.x에서는 Spring Security 6.x가 적용되면서,
❌ WebSecurityConfigurerAdapter가 완전히 제거되었습니다!
✅ 이제 SecurityFilterChain을 사용해야 합니다.
🔽 변경 전 (Spring Boot 2.x)
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated();
}
}
🔼 변경 후 (Spring Boot 3.x)
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.context.annotation.Bean;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/public/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(withDefaults());
return http.build();
}
}
✅ 해야 할 일:
🔄 WebSecurityConfigurerAdapter를 제거하고, SecurityFilterChain으로 변경하세요!
🚀 5. GraalVM 네이티브 이미지 지원 (서버리스 최적화!)
Spring Boot 3.x에서는 GraalVM을 활용한 네이티브 이미지 빌드가 가능합니다.
💡 네이티브 이미지는 실행 속도가 빠르고, 메모리 사용량이 적어 클라우드 환경에서 유리합니다.
💻 네이티브 이미지 빌드 방법
./mvnw -Pnative native:compile
✅ 장점:
⚡ 서버리스 환경에서 실행 속도 향상
🖥 메모리 사용량 절감
📊 6. Observability 지원 (Micrometer & OpenTelemetry)
Spring Boot 3.x에서는 Observability(관찰 가능성) 기능이 추가되었습니다.
Micrometer와 OpenTelemetry를 통해 애플리케이션 상태를 모니터링할 수 있습니다.
🛠 예제 코드
@Bean
MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry -> registry.config().commonTags("application", "my-app");
}
✅ 장점:
📊 시스템 성능 모니터링 가능
🔍 클라우드 네이티브 환경에서 활용 가능
🏁 7. Spring Boot 2.x → 3.x 업그레이드 체크리스트
✅ 1단계: build.gradle 또는 pom.xml 수정
✅ 2단계: Java 버전 확인 (Java 17 이상)
✅ 3단계: javax → jakarta 패키지 변경
✅ 4단계: Spring Security 설정 변경
✅ 5단계: GraalVM 네이티브 이미지 빌드 테스트
🎯 결론
Spring Boot 3.x는 더 빠르고, 가벼우며, 클라우드 친화적인 개발을 지원합니다.
Spring Boot 2.x에서 업그레이드하려면 Java 17 이상 사용, javax → jakarta 패키지 변경, Spring Security 설정 변경 등의 작업이 필요합니다.
지금 바로 프로젝트를 Spring Boot 3.x로 업그레이드하여 최신 기능을 활용해 보세요! 🚀
🔥 Spring Boot 3.x로 업그레이드할 준비 되셨나요?
📢 궁금한 점은 댓글로 남겨주세요! 😊
'SPRING' 카테고리의 다른 글
🚀 Spring Boot 3.x에서 GraalVM Native Image 활용법 (0) | 2025.02.11 |
---|---|
2025년 최신 Spring Boot 3.x의 새로운 기능 정리 (0) | 2025.02.10 |
SPRING BOOT SSO 자료 정리 (0) | 2020.11.05 |
SpringBoot 와 FCM 연동 (0) | 2019.04.16 |
properties와 value 사용시 static 변수의 연결 (0) | 2019.03.28 |
- Total
- Today
- Yesterday
- springboot속도최적화
- springboot차이점
- 개발자
- springboot최신기능
- jakartaee10
- springboot3
- aiseoul2025
- patternmatching
- Java21
- springboot업그레이드
- springsecurity6
- XBOXSERIESX
- 스프링부트
- springboot업데이트
- 백엔드
- 스프링
- AI혁신
- nativeimage
- pc게임
- 서울ai
- java
- GraalVM
- 게임추천
- 에이전틱ai
- virtualthreads
- Ai
- 인공지능
- java개선사항
- 딥페이크방지
- 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |