[Spring] Spring 과 Spring Boot 의 차이점
오늘은 Spring 과 Srping Boot 의 차이점에 대해 정리해보려고 한다.
우선 Spring이란 무엇일까?
Spring이란 Spring Boot, Spring Framework, Spring Data, Spring Cloud 등 여러 프로젝트들의 모음이다.
밑의 링크에서 여러 프로젝트들을 확인할 수 있다.
따라서 Spring의 하위 프로젝트중에 하나가 Spring Boot인 것이고, Spring의 Core라고 할 수 있는 것이 바로
우리가 사용하고있는 Spring Framework 이다. 흔히 Spring을 말하면 Spring Framework를 뜻한다고 보면 된다.
그럼 Spring Boot는 무엇을 하는 아이인지 알아보자.
공식문서를 보면 이렇게 나와있다.
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
간단하게 말하면 Spring Boot는 Spring Framework를 사용하기 쉽게 해 준다고 보면 되겠다. 너무 간단했나?
Spring Boot 가 Spring Framework를 어떻게 사용하기 쉽게 만들어주는지 보면 크게 3가지이다.
1. 의존성 관리
Spring Boot는 spring-boot-starter 라는 라이브러리를 이용해서 의존성을 쉽게 관리해주며 그에 맞는 버전까지 관리해준다.
2. 자동 설정
기존 Spring의 경우는 초기설정이 되게 복잡한 것으로 유명했고, 그래서 스프링은 설정이 반 이상이라는 말도 있을 정도였는데, 이것을 해결해 준다.
Spring Boot는 최소한의 설정으로 Spring의 모든 설정을 자동으로 해준다.
Spring Boot를 이용하여 프로젝트 생성을 하면 메인 Class에 @SpringBootApplication이 붙은 것을 볼 수 있고,
이 어노테이션을 들여다보면
다양한 어노테이션을 볼 수 있는데, 이름만 봐도 이 어노테이션들이 어떤 역할을 수행하고 있는지 알 수 있게 해준다.
@EnableAutoConfiguration 으로 들어가서 Import를 하고 있는 AutoConfigurationImportSelector 클래스를 들어가고 하면 Configuration들을 가져오고 하는 걸 볼 수 있는데, 궁금하다면 직접 들어가서 코드를 들여다보면 좋을 것 같다.
3. 내장 서버
Spring Boot는 WAS가 내장되어있어서, 쉽게 빌드하고 배포할 수가 있다.