웹 프로그램(웹 애플리케이션)을 쉽고 빠르게 만들 수 있도록 도와주는 자바의 웹 프레임워크,
간단하게 얘기하면
1. 톰캣(Tomcat)이라는 서버를 내장하고
2. 그 외 여러 편의 기능들을 추가하여 사용할 수 있는 스프링 프레임워크이다.
내가 아는 방법은 두 가지가 있다.
1. https://start.spring.io 를 통해 프로젝트를 생성한다.
2. IntelliJ IDEA Ultimate 버전에서 프로젝트를 생성한다.
단계를 나누어보면 다음과 같다. ( 다음 예시는 spring.io로 만드는 과정이다 )
1. 빌드 관리 도구를 선택한다. ( 크게 Gradle과 Maven으로 나눠진다. )
2. 어떤 언어를 사용할 지 선택한다. ( java, Kotlin 등이 있다. )
3. Spring Boot 버전을 선택한다.
4. 그룹, 이름, 패키지 등 상세 부가 설정을 해준다.
5. 의존성(Dependencies)을 추가해준다.
빌드 관리 도구란 말 그대로 빌드를 도와주는 도구이다.
간단하게 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 도구라고 할 수 있다.
내 개인적인 생각으론 빌드 관리 도구가 필요한 가장 큰 이유는 라이브러리 때문이라고 생각한다.
우리가 프로젝트를 만들다보면 수많은 외부 라이브러리를 가져다 쓴다.
만약 빌드 관리 도구가 없다면 외부 라이브러리를 사용하려고 할 때
우리는 의존성을 추가하는 과정에서
라이브러리의 버전을 설정해줘야하고, 종속성 정보를 명시하는 등 할 일이 많을 것이다.
이러한 번거로운 작업을 우리가 하는 대신에 빌드 관리 도구가 필요한 것이다.
우리가 웹 백엔드를 구축한다고 할 때 크게 필요한 것은
1. 서버를 구축하고
2. Spring MVC(Web MVC)가 필요할 것이다.
이러한 이유로 우리가 서버를 작동시키고 Spring MVC(Web MVC) 라이브러리를 불러와야 하는데,
이 과정을 위해서는 서버를 정해야하고, 해당 서버의 버전과 사용할 프로그램과 충돌은 안 나는지 등 확인해야 할 번거로운 작업이 너무나도 많다.
해당 과정을 Dependencies에서 Spring Web을 추가한다고 하면 스프링부트가 알아서 설정해준다.
이러한 이유로 의존성 추가가 중요한 것이고 스프링 부트를 사용하는 것이다.
예를 들어 우리가 Dependencies에서 Spring Web을 추가한다고 하자.
그럼 내장 톰캣과 Spring MVC(Web MVC)가 함께 포함된다.
이러한 내장된 구성 요소들을 스타터(Starter)라고 하며, 스타터의 기능은
1. 특정 기능이나 라이브러리 그룹을 위한 의존성 집합을 지원한다.
2. 해당 기능을 사용하기 위해 필요한 모든 라이브러리와 설정을 자동으로 제공한다.
즉, 예시로 있는 Spring Web은 스타터(Starter)인 것이고
의존성을 추가한다는 것은 스타터를 추가한다는 의미와 같다.