Spring Boot 개요

이정수·2025년 10월 18일

Spring Boot

목록 보기
3/25

스프링 부트가 등장하기 이전
Spring Boot가 등장하기 이전에는 Spring Project를 생성 시 개발자가 수작업으로 다음 설정들을 수행

Dependency 관리 ( pom.xml )
Web App' Configuration 정의 ( web.xml )
Spring Bean 관리 ( content.xml )
NFR 구현을 위한 코드 작성 ( Non Functional Requirements )

。 상단의 많은 설정을 하고 나서야 Production 환경에 적합한 Application을 개발할 수 있었고, Application빌드시에도 외장 WAS, 라이브러리 등을 손수 추가설치하여 배포
▶ 해당 과정을 새 프로젝트마다 반복하는 어려움이 존재

。과거 개발자Spring을 통해 개발 시 직접 서블릿을 구현하고 이를 톰캣과 같은 외부 웹서버에 배포해야 했지만 지금은 Spring Boot를 통해 Spring Web Starter를 포함하여 jar 빌드내장 톰캣을 제공하기 때문에 별도의 설정 없이 JAR만 실행하여 서버 구동이 가능

Spring Boot
Spring Framework의 설정의 복잡함을 개선하고자 개발을 수행 시 필요한 설정을 간편하게 처리하는 별도의 프레임워크

Production ready , Build quickly
Application 개발 시 필요한 환경 설정최소화하고 개발자Business logic에 집중하게 함으로써 생산성을 향상

프로젝트를 자체적인 WAS를 내장 및 독립적으로 실행 가능한 Jar 파일빌드하여 도커를 통한 이미지화가 간편
Starter를 포함 시 빌드단계에서 Starter가 의존하는 라이브러리들을 JAR에 포함
Spring Web Starter를 포함한 Jar 파일을 실행 시 자동으로 Spring Application내장서버 위에서 구동

Spring Bootspring-web starter를 추가하여 Project 생성 시 기본적으로 내장서버 상에서 실행가능한 완성된 어플리케이션( Production )을 제공하며 해당 어플리케이션을 기반으로 비즈니스 로직을 추가

@SpringBootApplication :
Spring Boot로 생성한 Application진입점 Class에 선언하는 Annotation
▶ 기존 Spring에서는 Application을 실행하기위해 수많은 설정을 했어야 했으나, Spring Boot에서는 해당 어노테이션을 통해 Application빌드하여 간단한 실행이 가능.

@SpringBootApplication 안에 @ComponentScan이 포함
@SpringBootApplication을 포함하는 클래스 경로 기준 하위 패키지 범위 내 모든 Spring Bean전역 Spring Context에 포함됨

기존 Spring배포 방식
xmlSpring Bean 설정 및 WAS를 따로 설치하여 Springtomcat위에서 구동하도록 설정해야 했음

1. Java 설치
2. 외장 WAS 설치
( ex : Tomcat , WebSphere , WebLogic )
3. WAR 파일 배포
배포까지의 설정이 개발자가 수작업으로 작업 및 복잡하므로 Spring BootEmbedded Server를 활용

Spring Boot를 활용한 배포 방식
Spring Boot에서 Spring Boot Starter를 추가 시 Starter가 의존하는 라이브러리들을 JAR 에 포함하여 빌드

프로젝트Spring Web Starter를 포함하여 빌드Tomcat과 같은 WAS가 이미 Spring WebJAR 파일 내에 내장
WAR 방식과 다르게 서버를 따로 설치하지 않아도 Java만 설치하면 JAR 파일을 실행하여 Spring내장서버 상에서 구동이 가능

JAR ( .jar : Java ARchive) :
。여러 개의 Java Class 파일, 메타 데이터, Resource 파일 등을 하나의 파일패키징Archive 파일

。필요한 기본적인 dependency들을 전부 구성하여 추후 이미지 빌드시에도 매우 용이

Spring Boot에서 제공하는 기능
ApplicationProduction ready , Build quickly하기 위한 다음 기능을 제공한다

Build Quickly : 빠른 개발 시 유용한 기능

  • Spring Initializer spring.io
    Spring Boot project를 쉽게 생성.
    프로젝트 틀 ( 빌드스크립트, 디렉토리 구조 )등을 자동 생성

    Intellij 를 통해 더욱 쉽게 생성할 수 있음

  • Spring Boot Starters :
    프로젝트에 필요한 여러 라이브러리·프레임워크를 하나의 그룹(Starter)으로 묶어서 의존성 선언단순화해 주는 Spring Boot의 편의 기능
    빌드Starter 관련 라이브러리들을 일괄적으로 내려받아 프로젝트에 포함

  • Spring Boot Embedded Server
    Embedded Server : Application을 통해 작동시킬 수 있는 내장 WAS 서버

    Spring Boot는 다양한 Embedded Server를 지원하여 JAR내에 설치되어 JAR 실행 시 내장서버가 구동
    spring-boot-starter-tomcat
    spring-boot-starter-jetty
    spring-boot-starter-undertow

  • Auto-Configuration
    。기존 Spring설정의 자동화가 되지않아 추가된 기능

    Spring ApplicationComponentScan 등의 수많은 Configuration을 자동으로 설정
    Spring Boot 프로젝트class path 상에 존재하는 framework , Annotation 등의 Existing Configuration을 토대로 자동화된 Application Configuration을 제공.

    Auto Configuration logic의 위치
    Maven Dependencyspring-boot-autoconfigure-3.2.5.jar 내에서 AutoConfiguration을 수행하는 클래스들이 존재
    spring-boot-autoconfigure-3.2.5.jarorg.springframework.boot.autoconfiguration.web 및 하위 패키지에는 에서는 Web applicationREST API에 관련된 모든 Auto Configuration 클래스가 존재



  • Spring Boot DevTools
    소스코드를 변경할때 마다 개발자가 수동으로 서버를 재시작해야하는 불편함을 개선한모듈
    자동으로 서버를 재시작하면서 코드 변경사항을 적용

    build.gradle에 해당 모듈에 대한 의존성을 정의하여 기능의 사용이 가능
    spring-boot-devtools

Be Production-Ready : 운영환경 지원

  • Logging
    콘솔에 표현되는 loglogging level을 설정

  • Profiles , @ConfigurationProperties
    Application Configuration 간소화
    profile 별 여러 환경에 맞는 다양한 설정을 제공.

  • Actuator :
    Endpoint를 이용한 Application의 전반적인 상태에 대한 monitoring 수행.
    
profile
공부기록 블로그

0개의 댓글