안녕하세요, 도토리입니다.
잘못된 정보가 있거나 오류가 있으면 언제든지 댓글로 이야기 해주세요!! 😅
이젠 더이상 start.spring.io에서나 intellij 에서 새로운 스프링 부트 프로젝트를 생성할때 2.xx 버전을 지원하지 않는다.
다양한 이유에서이겠지만, 가장 큰 이유들은 아래와 같다.
1. 보안 취약점
- 지원이 종료된 버전은 새로운 보안 취약점에 대한 패치가 제공되지 않을 수 있으므로 시스템의 보안에 위험이 있을 수 있습니다.
2. 호환성 문제
- Spring Boot의 새로운 버전과의 호환성이 보장되지 않을 수 있으므로 애플리케이션의 작동에 문제가 발생할 수 있습니다.
3. 지원 및 업데이트
Spring Boot에서 더 이상 업데이트 및 지원을 제공하지 않으므로 새로운 기능 및 개선 사항을 이용할 수 없게 됩니다.
그럼에도 불구하고 우리는 2.xx 버전의 스프링 부트가 필요할때가 있다!!
어떻게 downgrade 하는지 알아보자!
spring boot 버전 다운그레이드
이글은 gradle 기준으로 작성되었습니다.
위와 같이 더이상 intellij에서 spring boot 2.xx 버전을 찾을수가 없다...
그럼 일단 3.xx 버전으로 스프링 부트 프로젝트를 하나 만들어보자!
3.1.8 버전 기준으로는 프로젝트를 만들면 build.gradle 파일은 아래와 같이 구성되어 있다...!
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.8'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web-services'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('bootBuildImage') {
builder = 'paketobuildpacks/builder-jammy-base:latest'
}
tasks.named('test') {
useJUnitPlatform()
}
그러나 우리가 원하는건 2.xx 버전이고 사실 되게 간단하다.
위에 plugins 부분에 보이는 3.1.8을 내가 원하는 2.xx 버전대로 변경하고 gradle build를 다시 하면 된다!
(수정된 build.gradle은 아래와 같음!)
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.5'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web-services'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('bootBuildImage') {
builder = 'paketobuildpacks/builder-jammy-base:latest'
}
tasks.named('test') {
useJUnitPlatform()
}
마무리
사실 되게 간단하지만, spring 공식문서와 intellij등 여러곳에서 3.xx 버전을 권장하고 사용하도록 하는것은 다 이유가 있으니 왠만해서는 3.xx 버전대로 사용하자!
참고로 3.xx와 2.xx의 큰 차이는 2.xx대에서의 javax.aaaa.* 의 패키지 명이 3.xx대 버전으로 오면서 jakarta.aaaa.*로 변경되었다.
(오라클이 사실상 자바로 수익화에 실패하면서 기술 주도권을 비영리 단체인 이클립스 재단에 넘기면서 변경된것이라고 하는데, 자바라는 상표권은 아직 오라클이 가지고 있어서 javax 에서 jakarta로 변경된거라고 하네요~~)
'JAVA > Spring-boot' 카테고리의 다른 글
[Java] 내가 짠 Java코드를 컴퓨터가 어떻게 읽을까? (feat. JIT compiler) (1) | 2024.02.18 |
---|---|
Transactional readOnly에 대한 고찰 및 주의 사항(feat. JPA Entity Manager) (0) | 2023.11.17 |
[Spring Boot] Spring과 Spring Boot의 차이?!? (1) | 2023.10.10 |
[Spring boot] AOP 적용 사례 (feat. AOP로 회원 인증을 구현해보자!) (0) | 2023.08.29 |