
스프링 부트는 기존 스프링 프레임워크의 여러 단점을 보완하고, 더욱 쉽게 사용 할 수 있도록 만든 프레임 워크이다.
스프링은 몇가지 단점을 가지고 있었다.
스프링에서는 여러 의존성과 버전을 관리하는것이 복잡하다.
의존성 주입(DI)를 구현하기 위해 XML 파일에 많은 수의 Bean을 직접 등록하고 관리해야 했다.
여러가지 강력한 기능을 사용하려면 그많음 많은 설정을 해야하고, 이는 초기 복잡성을 증가시킨다.
웹상에서 스프링을 사용하려면 별도의 Wep Application Server를 설치해야 하고, 설정해야 한다.서비스하기 위해선 별도의 서버에 수동으로 배포해야 하는 번거로움이 있었다.
번거로운 XML 설정이 필요없고, 최소한의 설정으로 Spring을 사용 할수 있게 해준다.
기본적인 설정을 자동으로 해주어 개발자가 많은 설정을 하지 않아도 되기에 애플리케이션 개발에 집중 할 수 있다.
애플리케이션 실행시 필요한 기본 설정을 자동으로 구성한다.
Spring Boot는 @EnableAutoConfiguration을 통해 클래스패스(classpath)에 존재하는 라이브러리를 감지하여 적절한 Bean을 자동으로 등록한다.
application.properties 또는 application.yml 파일의 설정값을 기반으로 추가적인 설정을 적용한다.
내장된 서버(Tomcat, Jetty, Undertow)를 제공하여 별도의 서버 설정 없이 애플리케이션을 실행할 수 있다.
기존 스프링 프레임워크는 톰캣 등의 외장 웹 서버를 설치하여 WAR 파일을 생성하여 배포해야만 했지만 Spring Boot는 JAR 파일 실행만으로 애플리케이션 실행이 가능하다.
Spring Boot Starter를 사용하면 필요한 라이브러리를 쉽게 추가 할 수 있다.
서드파티 라이브러리의 의존성 관리를 위해 Starter 의존성 통합 모듈을 제공하기 때문에, Maven/Gradle 같은 빌드 도구에 버전을 명시하지 않아도 적합한 라이브러리 버전을 찾아주어 버전 관리가 간편해진다.
Spring Boot 애플리케이션은 JAR 파일 하나로 실행이 가능하다.
모든 설정과 웹 서버가 포함된 Fat JAR 또는 Uber JAR 형태로 패키징 가능하다.
바로 실행이 가능하다는 것은 별도의 서버 환경 없이 배포가 가능하다는 것을 의미한다.
Spring Boot Actuator는 애플리케이션의 상태를 모니터링하고 관리할 수 있도록 다양한 엔드포인트(Endpoint)를 제공한다.
애플리케이션의 실행 상태, 성능, 환경 정보, 로그, 메트릭스 등을 쉽게 확인할 수 있다.
REST API 형태로 엔드포인트를 제공하여 쉽게 접근 가능하며, 운영 환경에서 애플리케이션을 모니터링하고 문제를 빠르게 파악하는 데 유용하다.
build.gradle 또는 pom.xml에 Spring Boot Actuator 라이브러리를 추가한다.
Gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
}
Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
이후 application.properties에서 엔드포인트를 활성화 한다.
기본적으로 /actuator/health, /actuator/info만 활성화되어 있다.
# 모든 엔드포인트 노출
management.endpoints.web.exposure.include=*
#특정 엔드포인트만 노출시
management.endpoints.web.exposure.include=health,info,metrics