[springboot] springboot history

springboot 탄생 배경

springboot란 spring framework를 좀 더 쉽게 개발/배포할려는 목적으로 만들어 졌습니다.
2012년 Mike Youngstrom은 spring 프레임워크에서 컨테이너 없는 웹 애플리케이션 아키텍처에 대한 지원을 요청하는 spring jira 기능 요청을 작성했습니다.
해당 지라를 정리해보면 아래와 같습니다.

  • Servlet 구성 요소 모델의 지식이 필요하지 않는 통합 컴포넌트 모델을 제공합니다.
  • 컴포넌트 및 애플리케이션 구성을 위해 개발자가 학습해야 하는 것은 하나의 스프링 구성 모델뿐입니다.
  • void main으로 애플리케이션 시작 및 종료를 간소화합니다.
  • 더 간단한 순수 자바 클래스 로딩 계층을 갖고 있습니다.
  • 개발 도구가 더 간단해야 합니다. 복잡한 IDE를 사용하여 WAR 파일을 생성하고 개발 컨테이너에 배포하는 대신 애플리케이션의 Main 클래스를 실행하면 됩니다.

위 요청 지라는 아직도 존재하고 있으니 한번 확인해 보면 좋을 것 같습니다.

https://jira.spring.io/browse/SPR-9888

springboot 1.x

이후 2014년 4월에 최초의 springboot 1.0이 release 되었습니다.
그 후 마이너 버전이 계속 해서 release 되었지요.

  • spring boot 1.1 (2014년 6월) - 향상된 템플릿 지원, gemfire 지원, elasticsearch 및 apache solr에 대한 자동 구성.
  • spring boot 1.2 (2015년 3월) - servlet 3.1/tomcat 8/jetty 9로 업그레이드, spring 4.1 업그레이드, 배너/jms/SpringBootApplication 주석 지원.
  • spring boot 1.3 (2016년 12월) - spring 4.2 업그레이드, 새로운 spring-boot-devtools, 캐싱 기술(ehcache, hazelcast, redis, guava 및 infinispan)을 위한 자동 구성 및 완전히 실행 가능한 jar 지원.
  • spring boot 1.4 (2017년 1월) - Spring 4.3 업그레이드, Couchbase/neo4j 지원, 시작 실패 분석 및 RestTemplateBuilder.
  • spring boot 1.5 (2017년 2월) - kafka/ldap 지원, 타사 라이브러리 업그레이드, CRaSH 지원 중단 및 Actuator 로거 엔드포인트를 통해 즉시 애플리케이션 로그 수준을 수정합니다.

그리고 2014년 6월 spring io가 출시 되었습니다. spring io는 종속성의 버전을 지정하지 않아도 자동으로 springboot 버전에 맞는 종속성을 가져올 수 있는 특징을 가졌죠.
그 결과물 중엔 현재 흔히 쓰이는 spring-boot-starter-*도 포함되어 있습니다.

springboot 2.x

spring 1.5 출시 이후 2018년 3월 드디어 springboot 2.0이 release 되었습니다. release note를 보면 아래와 같은 특징을 가지고 있습니다.

  • spring framework 5 지원
  • java 8 이상에서 작동 및 java 10 지원
  • 반응형 웹(spring webflux) 지원
  • kotlin 지원
  • Junit 5 지원
  • springboot metric에 micrometer 도입
  • quartz 스케줄러 springboot 스타터 적용
  • 기본 연결 pool tomcat에서 hikariCP로 변경

또한 아래와 같은 마이너 버전도 계속 해서 release 되었습니다.

  • spring boot 2.1 (2018년 10월) - java 11/12 지원, spring 5.1/tomcat 9/undertow 2/micrometer 1.1 업그레이드
  • spring boot 2.2 (2019년 10월) - java 13, Rsocket 지원, 지연 시작 기능 추가, spring 5.2 업그레이드
  • spring boot 2.3 (2020년 5월) - java 14/15, docker 빌드 지원, graceful-shutdown/r2dbc 추가, spring 5.3 업그레이드
  • spring boot 2.4 (2020년 11월) - java 15/16, docker 배포 지원, application.yml 기능 개선, startup endpoint 추가, spring 5.4 업그레이드
  • spring boot 2.5 (2021년 5월) - java 17/18, gradle 7 지원, 향상된 docker 이미지 구축, spring 5.5 업그레이드
  • spring boot 2.6 (2021년 11월) - java 19 지원, SameSite servlet 세션 쿠기 지원, spring mvc WebClientTest 테스트 지원
  • spring boot 2.7 (2022년 5월) - java 20 지원, GraphQL용 자동 구성, 빌드팩 podman 지원, Cache2k 지

springboot 3.x

2022년 11월 springboot2에서 많은 부분이 업그레이드된 springboot3가 발표됩니다.

  • spring framework 6 지원
  • java 17 이상에서 작동 및 java 20 지원
  • GraalVm 네이티브 빌드 추가
  • java EE -> jakarta EE API 이전
  • log4j 개선
  • 프로메테우스 지원

마이너 버전

  • spring boot 3.1 (2023년 5월) - Testcontainer/docker-compose 지원, spring authorization server 자동 구성, spring 6.1 지원

특히 spring framework 6.2부터 가상스레드를 지원할 예정이며 이 버전을 지원하는 springboot는 3.2로 예상됩니다.
가상스레드는 별도의 포스트를 통해 정리해 보겠습니다.

참고

https://www.quickprogrammingtips.com/spring-boot/history-of-spring-framework-and-spring-boot.html
https://endoflife.date/

springboot history

2023

[linux] shell script version compare

최대 1 분 소요

개요 linux를 사용하다 보면 version 비교하는 기능이 필요합니다. 특히 기존 설치된 패키지의 version을 확인하여 업데이트할 경우가 있겠죠. 아래와 같이 간단한 shell script로 구현할 수 있습니다.

[jenkins] jenkins docker install

2 분 소요

ci/cd 오픈소스 도구로 가장 많이 사랑 받는 jenkins에 대해 포스팅 해보겠습니다. 먼저 설치부터 해야겠지요? 항상 패키지 매니저로 설치했었는데 이번에는 docker로 설치해보도록 하겠습니다.

[springboot] springboot history

2 분 소요

springboot 탄생 배경 springboot란 spring framework를 좀 더 쉽게 개발/배포할려는 목적으로 만들어 졌습니다. 2012년 Mike Youngstrom은 spring 프레임워크에서 컨테이너 없는 웹 애플리케이션 아키텍처에 대한 지원을 요청하는 spring...

[springboot] springboot3 querydsl 적용

1 분 소요

개요 springboot3로 메이저 업그레이드 되면서 JPA + querydsl 셋팅 환경에 변화가 생겼습니다. 기존 의존성으로는 작동하지 않고 jakarta classification을 추가해야 작동하는 이슈가 발생합니다. springboot3부터 javax -> jakar...

[springboot] springboot3 migration

최대 1 분 소요

개요 2022년 하반기에 springboot3가 공식 release 되었습니다. springboot2가 2018년 상반기에 release되고 나서 새롭게 판올림 버전으로 가장 큰 변화로는 아래와 같습니다. spring framework 6 적용 최소 사양 JDK 17 ...

[springboot] springboot initializer

최대 1 분 소요

개요 항상 intellij ultimate 버전만 사용하고 있었는데 무슨 바람이 난건지.. intellij ce 버전에 도전하였습니다. springboot 프로젝트 생성이며.. 그 밖에 기본적으로 될꺼라 싶은것 중에 안되는 녀석들도 꽤 있더군요. 이번 시간엔 간단하게 spingbo...

[querydsl] querydsl No release for a long time

최대 1 분 소요

개요 JPA를 spring data jpa + querydsl과의 조합으로 접하는 경우가 많습니다. spring data jpa에서 제공해주는 specification으로도 충분히 해낼수 있지만 querydsl에 비할바는 아닙니다. entity에 wrapper Q클래스를 생성하여 ...

[jekyll] jekyll install

6 분 소요

개요 오랫동안 방치했던 블로그를 다시 열면서 jekyll를 다시 설치해봤습니다. 설치 jekyll 프로젝트로 이동하여 아래 명령어를 입력합니다. gem install jekyll bundler Fetching pathutil-0.16.2.gem Fetching terminal-t...

맨 위로 이동 ↑

2021

[linux] Parse yaml

최대 1 분 소요

bash를 사용하여 yaml 파일을 파싱 및 환경 변수로 손쉽게 등록할 수 있습니다.

[유틸리티] Mock Http Status Test

최대 1 분 소요

외부 통신에 대한 Error 처리는 앱을 더욱 더 견고하게 만들 수 있습니다. Error 처리를 위해 엔드포인트에 대한 Http Status Code를 억지로 생성하는것은 매우 귀찮은 일이라고 할까요? 보다 간편하게 Mock 서버를 두는게 더 효율적이라고 볼 수 있습니다.

맨 위로 이동 ↑