스프링 부트를 사용하기 이전
- 의존성 관리(pom.xml)를 해줘야 함
- 프레임워크나 라이브러리의 버전과 의존성을 직접 관리줘야 함
- 웹 configuration 정의(web.xml)를 해줘야 함
- 스프링 빈 관리(context.xml)를 해줘야 함
- component scan, View Resolver등
- 비기능적 요구사항의 구현해야 함
스프링 부트 사용 시
크게 3가지의 차이점이 있다.
- 의존성 관리의 편리함
- spring boot starter projects를 활용해 의존성을 편하게 관리할 수 있다.
- Auto Configuration
- Embedded Server
- 스프링 부트가 제공하는 편리함과 각 기능에 대해서 아래에서 자세히 알아보자.
스프링 부트의 강력함
1. 스프링 부트 어플리케이션 생성 또는 구축의 편리함
1. spring initializr
spring initializr를 이용해 스프링 어플리케이션을 쉽게 생성할 수 있다.
2. spring boot starter projects
- 편리한 의존성 discriptor
어플리케이션에 필요한 프레임워크나 라이브러리를 사용하기 위해 필요한 의존성들이 사전 정의가 되어있다.
- 예를 들어 spring-boot-starter-web의 경우 해당 파일을 확인해보면
아래처럼 json, tomcat, web 등 web appliction 제작에 필요한 의존성을 이미 정의하고 있다.

- 따라서 Starter를 이용해 해당 기능과 연관된 의존성을 포함해 가져온다.
- 다양한 starter project를 제공한다.
따라서 필요에 따라 Strater Projects를 선택해 사용할 수 있다.
- Web Application이나 Rest API
- Unit Tests
- JPA
- JDBC
- Securer(Spring Boot Strater Security)
3. Auto Configuration
- 의존성, 작업, 클래스를 확인해 어플리케이션을 위한 자동 설정을 제공한다.
- 클래스 패스에 존재하는 프레임워크
또는 자체 설정을 이용해 configuration(@Configuration 등)에 따라 자동으로 설정을 해준다.
- 예를 들어 Spring Boot Starter Web의 경우 아래와 같은 빈이 자동으로 등록된다.
- DispatcherServlet

- Embedded Servlet Container
EmbeddedWebServerFactoryCustomizerAutoConfiguration
- Default Error Pages

- Message Converter
- 개발자의 생산성을 향상시킨다.
- 코드를 변경할 때마다 서버를 재시작하는 것은 생각보다 번거롭다.
spring boot devtools는 코드를 변경하고 저장하면 자동으로 서버를 재구동하여 변경사항을 확인할 수 있게 해준다.
- pom.xml에 의존성을 추가해주자
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
- 인텔리제이를 사용하는 경우 아래와 같이 추가적인 설정이 필요하다.

2. Production환경 지원 기능
1. 프로필을 이용한 어플리케이션 configuration(설정) 관리

-
어플리케이션에는 다양한 환경이 존재한다.
Dev, QA, Stage, Production 등등
-
또한 각 환경에서는 각각의 설정을 필요로 한다.
개발 환경에서는 개발 데이터베이스
테스트 환경에서는 테스트 데이터베이스
프로덕션 환경에서는 프로덕션 데이터베이스와 통신한다.
-
프로필을 활용하면 환경마다 다른 설정값을 적용할 수 있다.
-
활용 방법은 아래를 참고하자
프로필 활용
2. Embedded Server
-
스프링 부트를 활용하면 서버 배포가 더 쉬워지는데 아래의 그림을 보자.

기존에는 java를 설치하고, 웹 서버를 설치한 뒤 WAR파일을 배포하는 방식이었다.
-
하지만 스프링 부트를 활용하면 Jar파일 생성하면 서버가 내장(기본적으로 tomcat)되어 있어 더 간단하다.
3. Monitering
- 스프링 부트에서는 Actuator를 이용해 어플리케이션을 모니터링하고 관리할 수 있다.
Actuator는 여러 엔드포인트를 제공한다.
- beans
어플리케이션에 포함된 모든 스프링 빈을 beans엔드포인트를 확인할 수 있다.
- health
어플리케이션의 상태정보를 확인할 수 있다.
- metrics
애플리케이션의 성능과 상태를 측정하는 데 사용되는 정보를 제공한다.
예를 들어, 애플리케이션의 CPU 사용량, 메모리 사용량, 요청 수, 응답 시간 등의 지표를 확인할 수 있다.
- mappings
요청 매핑과 관련된 세부 사항을 확인할 수 있다.
이처럼 스프링 부트는 다양한 측면에서 장점을 가지고 있으며 특히 편리하다는 장점으로 대부분의 프로젝트에서 활용하고 있다.
이번 포스팅에서는 스프링 부트의 강력함에 대해 대략적으로 알아보았다. 스프링과 스프링 부트의 차이점에 대해서는 대략적으로만 알고 있었는데, 스프링 부트에서 제공하는 기능에 대해 알아보며 둘의 차이점과 스프링 부트의 장점에 대해 더 자세히 알 수 있는 계기가 되었다!!!