back-end/SpringBoot

SpringBoot 기초 배우기 #1

정구 2022. 2. 21. 10:26
728x90

J2EE를 사용하여 웹 개발을 하려면 톰캣(Tomcat), 제티(Jetty), 언더 토우(Undertow) 같은 서블릿 컨테이너를 설치하고 프로젝트 내에 필요한 환경을 구성해야 한다.

 

 

 

대표적인 자바 애플리케이션 프레임워크인 스프링은 안정성, 성능, DI(의존성 주입) 등 강한 장점을 가지고 있지만, 개발 환경 설정이 만만치 않다.

 

 

 

이와 같은 단점을 보완하고자 나온 스프링부트는 필요한 환경설정을 최소화하고 개발자가 비즈니스 로직에 집중할 수 있도록 도와줘 생산성을 향상한다.

 

 

 

스프링 부트의 특징

  • 임베디드 톰캣, 제티, 언더 토우를 사용하여 독립 실행이 가능한 스프링 애플리케이션 개발
  • 통합 스터터를 제공하여 메이븐/그레이들 구성 간소화
  • 스타터를 통한 자동화된 스프링 설정 제공
  • 번거로운 XML 설정을 요구하지 않음
  • JAR을 사용하여 자바 옵션만으로도 배포 가능
  • 애플리케이션의 모니터링과 관리를 위한 Spring Actuator 제공

 

 

 

스프링에서는 의존 관계를 개발자가 일일이 설정해 번거로웠지만 스프링 부트에서는 스타터를 이용해 간편하게 설정할 수 있다. 빌드에 필요한 의존성을 자동으로 관리해주기 때문.

spring-boot-starter-*
// *에 해당 스타터명을 명시하면 된다.

spring-boot-starter-web

 

 

 

스타터 내부의 의존성을 확인하는 이유는 다음과 같다.

  1. 특정 스타터를 사용하려 하는데 의존 관계가 궁금할 때
  2. 의존 관계를 확인하지 않고 spring-boot-starter를 추가했는데 의존 관계 설정이 궁금할 때

 

 

첫 번째의 경우 Spring Boot Reference Guide를 참고하여 확인할 수 있다.

 

Spring Boot Reference Documentation

This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe

docs.spring.io

 

spring-boot-starter는 다음 여섯 가지 의존성을 제공한다.

 

  • spring-boot : 스프링 부트에서 기존 제공하는 의존성
  • spring-boot-autoconfigure : 스프링 부트의 자동 환경 구성에 필요한 의존성
  • spring-boot-starter-logging : 각종 로그를 사용하는데 필요한 의존성
  • javax.annotation-api : 소프트웨어의 결함을 탐지하는 어노테이션을 지원하는 의존성
  • spring-core : 스프링 코어를 사용하는데 필요한 의존성
  • snakeyaml : yaml을 사용하는데 필요한 의존성

 

 

두 번째의 경우 IDE에서 직접 확인할 수 있다.

 

인텔리제이의 경우 스프링 부트 프로젝트를 임포트하고 왼쪽 하단의 'External Libraries(외부 라이브러리)'를 펼치면 의존된 라이브러리들을 확인할 수 있다.

 

여러 라이브러리 중 'spring-boot-starter-*'이라는 이름을 가진 라이브러리의 내부를 직접 찾아보며 의존 관계를 살펴볼 수 있다.

 

 

 

 

GitHub - spring-projects/spring-boot: Spring Boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

spring-boot-project → spring-boot-dependencies의 pom.xml 파일에서 의존성 설정의 기본 버전을 확인할 수 있다.

Wiki의 Release Notes에서 버전에 따른 정보를 확인할 수 있다.

 

 

 

 

 

스프링 부트 장단점

 

장점

  • 각각의 의존성 버전을 올리는 것이 좀 더 수월하다. 스프링 부트의 버전이 올라갈 때마다 각 버전 간의 호환성에 대해 충분한 테스트를 거치고 릴리스 되기 때문에 기존에 하나씩 수동으로 설정했던 버전 관리에 비해 안정된 버전이 제공된다는 최소한의 보장을 얻을 수 있다.
  • 특정 라이브러리에 버그가 있다 하더라도 스픵팀에서 버그 픽스한 버전을 받기 편리하다.
  • 간단한 어노테이션 설정이나 프로퍼티 설정으로 세부적인 설정 없이 원하는 기능을 빠르게 적용할 수 있다.
  • 별도의 외장 톰캣을 설치할 필요가 없으며 위와 동일한 이유로 톰캣 버전도 더욱 편리하게 관리한다.

 

단점

  • 설정을 개인화(커스터마이징)하면 버전을 올릴 때 기존 스프링 프레임워크를 사용하는 것과 동일한 불편함을 겪을 수 있다.
  • 특정 설정을 개인화 호는 설정 자체를 변경하고 싶다면 내부의 설정 코트를 살펴봐야 하는 불편함이 있을 수 있다.
  •  
728x90