Spring Boot

김승규·2024년 3월 4일

Spring Boot Release

Spring Boot 2.0.X

  • Java Base line : java 8 ( java 7 이하를 지원하지 않음 )
  • Spring Framework 5.0
  • Default Datasource : HikariCP
    • 네트워크가 안정적인 상황에선 Apache commons dbcp보다 성능이 좋다.

Spring Boot 2.3.X.RELEASE(2020.05)

  • java 14 지원
  • graceful shutdown
  • 서버를 종료시켜도 이미 받은 요청에 대해서는 처리를 하고 종료시키는 기능
  • spring-boot-starter-validation 이 spring-boot-starter-web 에서 제외됨

Spring Boot 2.4(2020.11)

  • java 15 지원
  • 새로운 버전 스킴 적용 ( 2.3.5.RELEASE -->2.4.0 )
  • Docker Image Building 지원(jar)
    • 도커 이미지 쉽게 만드는 기능 지원

Spring Boot 2.5(2021.05)

  • java 16 지원
  • 환경변수 Prefix
  • Docker Image Building 지원(war)
    • war 지원

Spring Boot 2.6(2021.11

  • java 16의 record 를 @ConfigurationProperties 로 사용가능
    • @ConfigurationProperties는 .properties보다 type safe하게 쓸 수 있는 방법
  • 중요) 순환참조 빈은 금지가 기본 (spring.main.allow-circular-references)
    • 정 필요하면 spring.main.allow-circular-references 설정 값을 변경해야 한다.

Spring Boot 2.7(2022.05)

  • auto configuration 파일 위치 변경

Spring Boot 3.0.0(2022.11)

  • java 17 지원 ( java 17 이상부터 사용가능)
  • Spring Framework 6

스프링 부트의 Major 버전이 변경될때, Spring Framework, Java 버전이 변경됩니다.

Spring Boot Release

  • spring boot 는 Release에 따라 지원기간 정책을 제공합니다.

OSS support

  • 보안 업데이트와 버그수정을 무료로 지원합니다.

Commercial support

Spring Boot 목표-1

Java –jar 로 실행이 가능

  • $ java -help 사용법:
    • java [-options] class [args...] (클래스 실행)
    • java [-options] -jar jarfile [args...]

Spring Boot 목표-2

  • 빠르고 광범위한 getting-started 경험
  • 별도의 설정 없이 바로 사용 (out-of-box)
    • 예를 들어 여러개의 DB를 사용한다면, 각각을 적절하게 연결해준다.
  • 비기능 요구사항 기본제공
  • 코드 생성이나 XML 설정이 필요 없음

Spring Boot의 기능

단독으로 실행가능한 애플리케이션 생성

  • 실행형 jar, 실행형 war

내장형 웹 애플리케이션 서버 지원

  • Tomcat, Jetty, Undertow, Netty for WebFlux
    • Embedded Tomcat, ...

기본 설정된 Starter 모듈

  • 거대한 기능별로 여러 라이브러리들이 하나의 Starter 모듈로 패키징화 되어 있다.
    • 의존성 (library dependency)
    • 버전 호환성 보장 (dependencyManagement)
    • 자동 설정(Auto Configuration)

상용화에 필요한 통계, 상태점검 외부설정 지원

  • Actuator (Health, metrics)
    • Actuator라는 기능을 사용하여 Application의 상태(동작 중, 오류..), 통계(스레드 몇개..)를 다 제공
  • 외부 설정
    • 과거: 외부 설정에 필요한 값을 .properties로 관리하고, @Value로 가져와서 썼음
      -> 결국 패키징을 해서 배포하므로 코드와 다를바가 없음.
    • 스프링 부트: 외부 변수를 환경변수, 옵션 등을 이용하여 내부로 넣어줄 수 있다.

Spring Framework과의 비교(1/2)

라이브러리 의존성을 pom.xml 직접 설정해야 한다.

  • spring boot 에서는 spring-boot-starter-{module} 만 설정하면 필요한 라이브러리 설정 완료

버전 정보를 직접 설정하고 테스트 해야 한다.

  • spring-boot-starter-parent 에서 spring 모듈의 버전 및 3rd Party 라이브러리 버전도 제공
  • 런타임에만 확인 가능한 성가신 작업!

Web Application Server 에 배포해야 한다.

  • spring boot 에서는 내장형 Web Application Server를 제공하기 때문에 서버를 구매하거나 설정할 필요가 없다.
    • JEUS 같은 공공에서 쓰고있는 WAS는 구매가 필요하다
profile
꿈꾸는 리얼리스트 개발자 김승규입니다.

0개의 댓글