Spring Boot
스프링 프레임워크 개발팀은 전통적인 J2EE 웹 개발을 “겨울(Winter)” 라고 생각하고, 겨울의 종료와 함께 새로운 시작을 알리는 의미에서 프로젝트명을 “봄(Spring)” 이라 이름지었다.
Spring Boot 란?
Spring Boot 는 필요한 환경설정을 최소화하고 개발자가 비즈니스 로직에 집중할 수 있도록 도와주는 Spring Framework 의 서브 프레임워크이다. (공식 홈페이지의 첫 문장에서 볼 수 있듯이, Spring Boot 는 그저 “just run” 만 하면 된다는 걸 강조하고 있다)
“Spring Boot” is “Spring”
Spring Boot 는 개발자가 비즈니스 로직 개발에 더욱 집중할 수 있도록 개발자와 Framework 의 사이에서 초기 설정과 버전, 의존성 관리를 보조 해주는 장치일 뿐, 실제로는 Spring 과 같다.
Spring Boot 의 장점
- 환경설정의 자동화, 간소화 제공
- Dependency 관리 자동화 제공
- Embed Server 제공
Spring Boot 의 단점
- 자동화, 간소화된 환경으로 인해 커스텀 설정이 많은 서비스에는 다소 부적합
Spring vs. Spring Boot
구분 | Spring | Spring Boot |
---|---|---|
환경설정 | 강력한 기능 지원! 그러나 이를 사용하기 위한 복잡하고 반복적인 설정 작업. 환경설정의 기본 제공이 없어 최소한의 서비스를 개발하려고 해도 다양한 설정들을 직접 지정해야 함. -> 각 기업(커뮤니티) 별로 미리 정해놓은 커스텀 설정이 존재하는 경우도 있으나, 그렇지 않은 경우는 구글링을 통해 일일이 설정을 진행 해야함. Spring 2.5 미만 : XML 기반 Spring 2.5 이상 : Java Code, Annotation 기반 |
기본 설정 제공! 커스텀이 필요한 설정만 부분적으로 수정. @SpringBootApplication 어노테이션 하나로 서비스 개발을 위한 초기 기본 설정이 대부분 완료됨. (이를 Auto Configuration 이라 함) -> 서비스 별로 커스텀 설정을 위해서는 프레임워크에서 상속받은 자바 메서드를 오버라이드하여 재구성 할 수 있음 |
Dependency 관리 | 앱을 위한 의존성과 버전 관리를 개발자 주도적으로 진행함. -> 신규 의존성 추가나 버전 업그레이드 시 호환성 이슈가 있을 수 있음 |
앱을 위한 의존성과 버전 관리를 프레임워크 주도적으로 진행함 (수동 버전 관리 지양) -> 프레임워크 레벨에서 안정화 된 의존관계와 버전으로 자동 설정 -> 초기 구축 및 추후 서비스 버전 업그레이드에 용이함 |
서버 관리 | Tomcat, Jetty 등 현재 Spring 의 호환성에 맞는 서버 버전을 직접 선택 해야함(개발자 주도적 버전 관리) | 프레임워크 내에 서버가 내장(Embed Tomcat) 되어 있으며 Spring Boot 버전 별로 서버 자동 제공(프레임워크 주도적 버전 관리) |
MVC 로직 개발 | @Controller, @Service, @Repository, @Component 등 어노테이션 기반으로 Bean 을 등록하여 프레임워크 내에서 Bean 을 관리하고 느슨한 결합(Decuppling) 을 통해 유연한 서비스 제공 | Spring 과 동일 |
주요 Dependency 버전 호환 정보 (2.2.5 기준)
Spring boot 는 버전 별로 최적화된 Dependency 버전들을 관리하고 있다. Dependency 추가 시 버전 정보를 기입하지 않는다면, 자동적으로 아래 리스트에 따른 최적 호환 버전으로 설정된다. (리스트에 존재하지 않는 Custom Dependency 의 경우는 필히 버전을 지정해줘야 한다)
https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/reference/html/appendix-dependency-versions.html#appendix-dependency-versions