-
SpringBoot 기초 배우기 #1back-end/SpringBoot 2022. 2. 21. 10:26728x90
J2EE를 사용하여 웹 개발을 하려면 톰캣(Tomcat), 제티(Jetty), 언더 토우(Undertow) 같은 서블릿 컨테이너를 설치하고 프로젝트 내에 필요한 환경을 구성해야 한다.
대표적인 자바 애플리케이션 프레임워크인 스프링은 안정성, 성능, DI(의존성 주입) 등 강한 장점을 가지고 있지만, 개발 환경 설정이 만만치 않다.
이와 같은 단점을 보완하고자 나온 스프링부트는 필요한 환경설정을 최소화하고 개발자가 비즈니스 로직에 집중할 수 있도록 도와줘 생산성을 향상한다.
스프링 부트의 특징
- 임베디드 톰캣, 제티, 언더 토우를 사용하여 독립 실행이 가능한 스프링 애플리케이션 개발
- 통합 스터터를 제공하여 메이븐/그레이들 구성 간소화
- 스타터를 통한 자동화된 스프링 설정 제공
- 번거로운 XML 설정을 요구하지 않음
- JAR을 사용하여 자바 옵션만으로도 배포 가능
- 애플리케이션의 모니터링과 관리를 위한 Spring Actuator 제공
스프링에서는 의존 관계를 개발자가 일일이 설정해 번거로웠지만 스프링 부트에서는 스타터를 이용해 간편하게 설정할 수 있다. 빌드에 필요한 의존성을 자동으로 관리해주기 때문.
spring-boot-starter-* // *에 해당 스타터명을 명시하면 된다. spring-boot-starter-web
스타터 내부의 의존성을 확인하는 이유는 다음과 같다.
- 특정 스타터를 사용하려 하는데 의존 관계가 궁금할 때
- 의존 관계를 확인하지 않고 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'back-end > SpringBoot' 카테고리의 다른 글
SpringBoot 게시판 구현 #1 (스프링 부트 웹) (0) 2022.02.22 SpringBoot 기초 배우기 #5 (스프링 부트 테스트) (0) 2022.02.22 SpringBoot 기초 배우기 #4 (자동 환경 설정 이해하기) (0) 2022.02.22 SpringBoot 기초 배우기 #3 (환경설정 - 2) (0) 2022.02.22 SpringBoot 기초 배우기 #2 (환경설정 - 1) (0) 2022.02.21