Spring boot 버전 정리

2024. 12. 2. 18:04·Spring

 

 

처음에는 스프링 부트에 대해 아무것도 모르는 상황이라 학원에서 요구하는 버전대로 사용을 해왔지만 이제는 어느정도 익숙해지니 각 버전별로 어떤게 사용이 가능한지 혹은 안되는 것은 무엇인지 알기 위해 버전별로 정리해볼려고 한다.

 

1.x → 2.x (Spring Boot 2.0)

1. Spring Framework 업그레이드: Spring Framework 5.0 기반으로 변경.

 

2. Reactive Programming 지원: WebFlux 도입으로 비동기 및 논블로킹 API 지원.

 

3. Actuator 개선:

Actuator 엔드포인트가 /actuator로 기본 경로 변경.

새롭게 설계된 Actuator로 세부적인 메트릭스 제공.

 

4. Configuration Properties 개선:

프로퍼티 바인딩 개선 (@ConfigurationProperties 더 쉬운 사용).

Relaxed Binding 변경 (대소문자 구분 및 _, - 처리 방식 업데이트).

 

5. JPA와 Hibernate 개선:

Hibernate 5.2 이상 지원.

데이터베이스 기본 방언 설정이 개선됨.

 

6. 의존성 관리:

Gradle 4+와 Maven 3.5+ 필수.

Java 8 이상 필수.

 

7. 임베디드 컨테이너:

Undertow, Tomcat, Jetty 등의 버전 업그레이드.

 

2.x → 2.5, 2.6, 2.7

 

1. Spring Native 지원 (2.4~2.5):

GraalVM을 통해 네이티브 이미지 빌드 가능.

 

2. 테스트 유틸리티 개선:

@SpringBootTest와 @TestConfiguration 사용 편의성 증가.

 

3. Configuration 옵션 추가:

YAML에서 더 다양한 표현 가능.

spring.config.import를 통해 프로파일별 설정 외부화.

 

4. Actuator 메트릭 확장:

Prometheus와 Micrometer 지원 강화.

HTTP 요청 트래픽 모니터링 개선.

 

5. Docker 및 Kubernetes 친화성 증가:

컨테이너 환경에서의 성능 최적화.

헬스체크와 readiness/liveness 프로브 통합.

 

2.x → 3.x (Spring Boot 3.0)

 

1. Spring Framework 6.0 기반:

Jakarta EE로 완전 전환 (Java EE → Jakarta EE).

패키지 이름 변경: javax.* → jakarta.*.

 

2. Java 17 이상 필수:

Java 8 및 11 지원 중단.

최신 JVM 기능 활용 가능.

 

3. Native Support 강화:

GraalVM과의 통합이 더욱 쉬워지고 성능 개선.

 

4. Observability 기능 추가:

OpenTelemetry와의 통합.

애플리케이션의 분산 트레이싱 및 로그 수집이 더 쉬워짐.

 

5. Actuator 확장:

새로운 엔드포인트 추가.

메트릭 데이터와 상태 정보 확장.

 

6. 코어 API 정리:

오래된 API 제거.

최신 Spring 생태계와의 호환성 유지.

 

7. HTTP 인터페이스 추가:

HTTP 클라이언트 인터페이스를 @HttpExchange로 선언적 방식 지원.

 

Spring boot의 역사

Spring Boot 이전: Spring Framework의 도전 과제

 

2004년 Spring Framework 출시:

Spring Framework는 자바 개발에서 의존성 주입(DI)과 AOP 기반 프로그래밍을 도입하며 큰 인기를 끌었습니다.

하지만, XML 설정의 복잡성 및 초기 설정 비용이 개발자에게 큰 부담으로 작용했습니다.

 

Spring Framework의 확장:

Spring MVC, Spring Security, Spring Data 등의 프로젝트가 추가되었지만, 이를 통합하고 설정하는 데 많은 시간이 소요되었습니다.

개발자들이 필요한 설정 작업에 시간을 많이 투자해야 했고, 간단한 애플리케이션조차도 복잡한 설정을 요구했습니다.

 

Spring Boot의 탄생 (2014년)

 

 

Spring Boot 1.0 출시:

Spring Framework 팀은 애플리케이션 설정의 복잡성을 줄이고, 간단한 “시작”을 가능하게 하는 Spring Boot를 2014년 4월에 발표했습니다.

주요 특징:

자동 설정(Auto Configuration): 대부분의 Spring 설정을 자동화.

의존성 관리(Starter POM): 필요한 라이브러리를 간편하게 추가.

내장 웹 서버: Tomcat, Jetty, Undertow를 기본 제공해 독립 실행형 애플리케이션 개발 가능.

“Convention over Configuration” 철학: 기본값으로 동작하는 설정 제공.

Actuator: 애플리케이션 상태 및 메트릭 정보를 제공하는 관리 툴.

 

Spring Boot 1.x 시대 (2014~2018)

 

1. 1.0.x~1.5.x:

Spring Boot의 인기가 급상승하며, 기업과 개인 개발자들 사이에서 널리 사용되기 시작.

Java 8이 널리 보급되면서 Lambda 표현식과 같은 최신 기능과 잘 결합됨.

Spring Framework 4.x와의 긴밀한 통합.

 

2. 도전 과제:

Reactive Programming과 같은 새로운 요구사항을 충분히 지원하지 못함.

비동기 처리와 확장 가능한 아키텍처 지원에 제한적.

 

Spring Boot 2.x 시대 (2018~2022)

 

1. Spring Boot 2.0 출시 (2018년 3월):

Spring Framework 5.0 기반으로 새롭게 설계.

Reactive Programming 지원(WebFlux).

Java 8 이상 필수 (Java 6, 7 지원 종료).

Actuator의 대대적인 개선.

Hibernate, JPA 및 데이터베이스 지원 확장.

 

2. 중요한 변화:

클라우드 네이티브 개발에 적합한 기능 추가.

Docker 및 Kubernetes와의 통합 강화.

Prometheus, Grafana 같은 도구와의 호환성 개선.

Kotlin 공식 지원 시작.

 

3. 2.5~2.7 릴리스:

Spring Native 베타 지원으로 GraalVM 네이티브 이미지 빌드 가능.

DevTools, Spring Security, Spring Data 등의 추가 개선.

 

Spring Boot 3.x 시대 (2022~현재)

 

1. Spring Boot 3.0 출시 (2022년 11월):

Spring Framework 6.0 기반.

Jakarta EE 전환: Java EE의 javax 패키지를 jakarta로 대체.

Java 17 이상 필수.

GraalVM과의 통합으로 클라우드 네이티브 및 서버리스 환경에서 성능 최적화.

Observability 지원 (OpenTelemetry 통합).

 

2. 중요한 발전:

마이크로서비스와 클라우드 친화적 환경 지원 강화.

REST API와 WebSocket 같은 비동기 프로토콜의 성능 향상.

Actuator 및 메트릭 시스템 확장.

패키지 이름 변경으로 인해 기존 프로젝트의 마이그레이션 필요.

 

그러면 Spring boot로 인해 웹 생태에서 어떤 영향을 받게 되었나요?

자바 생태계의 표준:

간단한 설정과 높은 생산성으로 자바 개발의 표준 도구로 자리 잡음.

 

마이크로서비스 아키텍처의 확산:

Spring Cloud와의 결합으로 마이크로서비스 구현의 주요 선택지로 부상.

 

클라우드 네이티브 지원:

Kubernetes, Docker, AWS, GCP와의 통합이 강력해짐.

 

Reactive Revolution:

WebFlux와 Reactor를 통해 비동기, 논블로킹 API의 새로운 길을 제시.

반응형

'Spring' 카테고리의 다른 글

Spring Boot 핵심 개념  (0) 2025.02.25
Dispatchservlet이 Spring boot에서 controller로 이동하는 과정  (0) 2025.02.25
동시성 제어 (낙관적 락, 비관적 락, 분산 락)  (0) 2024.10.19
Transactional 관심사의 분리를 통해 로그 기록 남기기  (0) 2024.10.08
단위테스트, 통합테스트  (1) 2024.10.01
'Spring' 카테고리의 다른 글
  • Spring Boot 핵심 개념
  • Dispatchservlet이 Spring boot에서 controller로 이동하는 과정
  • 동시성 제어 (낙관적 락, 비관적 락, 분산 락)
  • Transactional 관심사의 분리를 통해 로그 기록 남기기
wanduek
wanduek
차근차근 쌓아가는 지식
  • wanduek
    완득님의 블로그
    wanduek
  • 전체
    오늘
    어제
    • 분류 전체보기 (194)
      • Onboarding (0)
      • 아티클 (0)
      • SQL 정리 (20)
      • 웹개발 기초정리(프엔) (9)
      • (Java)코테연습 (27)
      • 미니 프로젝트 (9)
        • 자기소개 웹페이지 (5)
        • 수강생 관리 프로그램(Java) (4)
      • GitHub 오류 및 명령어 정리 (7)
      • Java 문법정리 (Array부터) (17)
      • Java로 이용한 기능 (2)
      • Web지식 (12)
        • web3 (6)
        • 네트워크 (6)
      • 인텔리제이 오류 대처 방법 (1)
      • Computer Science (7)
      • Spring (38)
        • 미니 프로젝트(배달) (2)
        • Spring 트러블 슈팅 (3)
        • QueryDSL, JPQL (3)
        • 미니 프로젝트(뉴스피드) (5)
        • 미니 프로젝트(Trello) (2)
      • 개발자 밋업 (1)
      • Docker (2)
      • Redis (1)
      • AWS (6)
        • AWS 트러블 슈팅 (2)
      • Jmeter (2)
      • 우리 지금 만나 (12)
      • Kafka (1)
      • RabbitMQ (2)
        • 트러블 슈팅 (1)
      • STOMP (2)
      • WebSocket (3)
        • 트러블 슈팅 (2)
      • Node.js (2)
      • Elastic Search (2)
      • Nginx (1)
      • 퍼블엘 (2)
      • openresty (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백앤드개발자 #초심자
    github
    where
    ㅏㄷ
    jquery
    groupby
    fetch
    json
    git
    SQL
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
wanduek
Spring boot 버전 정리
상단으로

티스토리툴바