본문 바로가기

백엔드/SpringBoot

[SpringBoot] Spring Boot란 무엇일까

728x90

Spring Boot란

자바 개발자들이 빠르고 쉽게 독립 실행형 스프링 애플리케이션을 만들 수 있도록 돕는 도구다.

복잡한 설정 없이 "그냥 실행"할 수 있는 스프링 기반 애플리케이션을 만들 수 있게 해주는 것이 가장 큰 특징이다.

Spring이라는 Framework와 함께 Spring의 기능을 더 쉽게, 자동 설정과 내장 서버를 통해 사용할 수 있도록 도와주는 실행 플랫폼이라고 생각하면 된다.

Spring Boot의 등장 배경

그렇다면 이 스프링부트는 왜 등장했을까?

스프링부트가 등장하기 전 Spring Framework의 경우에는 여러 문제점들이 있었다.

web.xml, applicationContext.xml, DispatcherServlet과 같은 설정 파일이 너무 많아 프로젝트 초기 설정에 시간이 오래걸린다.

라이브러리 버전을 개발자가 직접 맞춰야 해서 종속성 출돌이 잦았다.

WAR(Web Application Archive) 배포 방식을 사용해서 외장형 WAS(Web Application Server)에 의존성을 가진다.

이러한 문제점을 해결하기 위해 Spring Boot가 등장하게 되었다.

Spring Boot의 특징

스프링부트는 결국 스프링을 쉽게 사용하게 해주는 도구이기 때문에 스프링의 역할을 어느정도 상속받는다.

대표적으로 스프링의 경량, POJO, IoC, DI, AOP와 같은 특징들은 그대로 계승한다.

1. 자동 설정

spring-boot-starter-web 의존성을 추가하면 @SpringBootApplication 어노테이션을 통해 다양한 설정을 자동으로 처리할 수 있다.

@SpringBootApplication 어노테이션은 실제로 @Configuration, @EnableAutoConfiguration, @ComponentScan 어노테이션의 조합이다.

DB 설정, 웹서버 설정, DispatcherServlet 등 대부분 기본값을 자동으로 적용시켜준다.

2. 내장 서버

Spring의 경우 WAR 파일을 만들어 Tomcat을 비롯한 외부 WAS에 배포해야 코드를 실행시켜볼 수 있었다.

하지만 Spring Boot에서는 Tomcat, Jetty, Undertow와 같은 웹 서버가 내장되어 있어 java -jar로 직접 실행시킬 수 있다.

java -jar target/myapp-0.0.1-SNAPSHOT.jar

3. Starter 의존성

Spring에서는 웹 기능을 사용하기 위해 spring-web, jackson, logback과 같은 라이브러리들을 추가해야 했다.

Spring Boot는 해당 라이브러리들을 starter 패키지로 묶어놨기 때문에 의존성을 추가하기만 하면 다른 라이브러리들을 따로 추가하지 않아도 된다.

4. Spring Initializr

Spring에서는 프로젝트 디렉터리를 수동으로 생성하고 Maven 설정도 직접 해야만 했다.

하지만, Spring Boot에서는 공식 웹 서비스인 Spring Initializr를 사용해 브라우저에 필요한 기능만 클릭하면 프로젝트를 자동 생성할 수 있다.

start.spring.io

5. Actuator & DevTools

Spring Boot에서 Actuator는 애플리케이션의 운영 환경 모니터링 및 관리를 위한 기능을 제공한다.

애플리케이션이 실행되고 있는 동안 내부 상태를 확인할 수 있게 HTTP 엔드포인트들을 노출해준다.

Spring에서는 이런 정보를 얻기 위해서 라이브러리를 추가하거나, 설정을 따로 해줘야 했었다.

Spring Boot에서 DevTools는 개발 과정에서 생산성을 높여주는 다양한 유틸리티 기능을 제공한다.

주요 기능으로는 자동 재시작, LiveReload, 속성 기본값 재정의 등이 있다.

6. 간단한 설정 방식

Spring에서는 XML을 사용해 환경 설정을 했으나 Spring Boot는 .properties.yml을 통해 환경 설정을 할 수 있다.

XML보다 더 간단하게 작성할 수 있다.

728x90

'백엔드 > SpringBoot' 카테고리의 다른 글

[Spring Boot] Vaildation이란 무엇인고  (0) 2025.06.20