Spring Boot 알아보기
Spring Boot에 대해 알아보고 정리한 내용입니다.
1. Spring Boot
자바 애플리케이션 프레임워크인 스프링은 안정성, 성능, DI(Dependency Injection, 의존성 주입) 등의 강력한 장점을 가지고 있어서 대표적인 프레임워크로 자리 잡았습니다. 그러나 개발 환경 설정에 어려움이 있었고 이러한 단점을 보완하고자 만들어진 것이 스프링 부트입니다.
스프링 부트는 환경 설정을 최소화하고 개발자가 비즈니스 로직에 집중할 수 있게하여 생산성을 크게 향상시켜줍니다.
1.1. 특징
간단한 설정만으로 빠른 실행이 가능한 스프링 부트의 특징은 다음과 같습니다.
- 독립 실행이 가능한 스프링 애플리케이션 개발 (Embedded Tomcat, Jetty, Undertow 사용)
- 통합 Starter를 제공하여 Maven/Gradle 구성을 간소화
- Starter를 통한 자동화된 스프링 설정 제공
- 번거로운 XML 설정을 요구하지 않음
- JAR을 이용하여 자바 옵션만으로도 배포 가능
- Spring Actuator 제공 (애플리케이션의 모니터링과 관리를 위해 사용)
1.2 스프링 부트와 스프링
스프링 부트는 스프링 프레임워크 내에서 설정을 간소화한 도구라고 볼 수 있습니다. 따라서 스프링 부트를 특징에 맞게 잘 사용한다면 스프링 프레임워크의 장점까지 더하여 빠르게 서비스를 개발할 수 있습니다.
1.3 스프링 부트의 장단점
장점
- 각각의 의존성 버전을 수월하게 올리는 것이 가능
스프링 부트의 버전이 올라갈 때마다 각 버전별 호환성에 대해 충분한 테스트를 거친 뒤 release
기존에 각각 수동으로 설정했던 버전 관리에 비해서 안정된 버전 제공을 보장받을 수 있음 - 간단한 어노테이션/프로퍼티 설정으로 원하는 기능을 빠르게 적용
- 별도의 외장 톰캣을 설치할 필요가 없고 톰캣 버전도 편리하게 관리 가능
- 특정 라이브러리에 버그가 있더라도 이후에 스프링팀으로부터 bugfix 된 버전을 받기에 편리함
단점
- 설정을 커스터마이징하는 경우 기존의 스프링 프레임워크를 사용하는 것과 같은 불편함이 있을 수 있음
- 설정을 변경하고 싶은 경우 내부 코드를 살펴봐야하는 불편함이 있을 수 있음
2. 스프링 부트 스타터 (Spring Boot Starter)
스프링 부트에서는 스타터를 이용하여 의존 관계를 간단하게 설정할 수 있습니다. 스프링 부트 스타터가 빌드에 필요한 의존성을 자동으로 관리해주기 때문입니다.
2.1 스프링 부트 스타터의 종류
다음은 스프링 부트에서 주로 사용하는 기본적인 스타터입니다.
- spring-boot-starter
스프링 부트의 코어 (auto-configuration, logging, yaml 등을 제공) - spring-boot-starter-aop
AOP(Aspect Oriented Programming)를 위한 스타터. - spring-boot-starter-batch
Spring Batch 사용에 필요한 스타터. - spring-boot-starter-data-jpa
Spring Data JPA와 Hibernate를 사용에 필요한 스타터. - spring-boot-starter-data-redis
Redis와 Jedis 사용에 필요한 스타터.
Redis는 메모리 저장 방식의 저장소.
Jedis는 자바에서 레디스를 사용할 수 있도록 지원하는 툴. - spring-boot-starter-data-rest
Spring Data Repositories(스프링 데이터 저장소) 방식에 맞춰 REST API 사용에 필요한 스타터. - spring-boot-starter-thymeleaf
Thymeleaf 템플릿 엔진 사용에 필요한 스타터. - spring-boot-starter-jdbc
JDBC Connection Pool 사용에 필요한 스타터. - spring-boot-starter-security
Spring Security 사용에 필요한 스타터. - spring-boot-starter-oauth2
OAuth2 인증 사용에 필요한 스타터. - spring-boot-starter-validation
Java Bean Validation 사용에 필요한 스타터. - spring-boot-starter-web
웹 개발을 위해 필요한 스타터 (Spring MVC, REST, Embedded Tomcat, 기타 라이브러리 등)
2.2 스프링 부트 스타터 의존성 확인하기
스프링 부트 스타터의 의존성은 아래 URL에서 Reference 문서를 참고하여 확인할 수 있습니다.
Reference 문서에서는 다음과 같이 스프링 부트에서 제공하는 각각의 애플리케이션 스타터 목록을 확인할 수 있습니다.
또한 깃허브에서 스프링 부트의 의존성에 대한 문서를 확인할 수 있습니다.
의존성 설정시 적용되는 기본 버전은 스프링 부트가 버전업 될 때마다 적합성 테스트를 거쳐 업데이트 됩니다. 스타터의 의존성을 사용하면 호환되는 버전을 일일이 확인하지 않아도 되지만 주로 사용하는 라이브러리의 버전 정도는 확인해두는 것이 좋습니다.
2.3 스프링 부트 버전별 차이점 확인하기
스프링 부트의 버전별 차이점을 확인하기 위해서는 스프링 부트 깃허브에서 위키를 확인해줍니다.
Release Notes 항목에서 버전별 차이점을 확인할 수 있습니다.
이상으로 스프링 부트의 간단한 특징에 대해 알아봤습니다.
※ References
- spring.io, Spring Boot, https://spring.io/projects/spring-boot
- 김영재 지음, 『처음 배우는 스프링 부트 2』, 한빛미디어 (2019), p17 ~ p30. CHAPTER 1 스프링 부트 입문하기