JAVA 언어를 사용한다면 한 번 쯤은 Spring이나 Spring Boot를 들어봤을 것이다.
근데 이게 무엇이고 왜 나왔고, 왜 사용하는지는 잘 모를 수도 있다.
Spring Boot를 알아보기 전에 먼저 Spring에 대해 간단히 알아보자.
Spring
Spring 홈페이지에 따르면, Spring은 자바 프로그래밍을 더 빠르고 쉽고 안전하게 해준다. 또 속도, 단순성, 생산성에 초점을 맞췄다. Spring은 세계에서 가장 유명한 자바 프레임워크이다.
결국 Spring은 자바 프레임워크라는 것이다. 결론적으로 자바 기반으로 다양한 어플리케이션을 만들기 위한 툴이다. 이는 Spring은 개발자가 비즈니스 로직에 집중할 수 있도록, 자바 기반 엔터프라이즈 어플리케이션을 위한 종합적인 기능을 지원한다는 뜻이다.
더 쉽게 말해, Spring을 이용해서 기업용 어플리케이션을 보다 쉽게 만들 수 있다는 뜻이다.
간단히 말해 DI, IoC 등을 통해 재사용 및 유지보수가 용이한 코드를 작성할 수 있고, 확장이 편리하다.
그렇게 우린 스프링이 제공해주는 기능들을 통해 비즈니스 로직에만 집중, 즉 생산성을 증가시킨다.
그럼 Spring을 사용하지 왜 Spring Boot가 나왔을까?
Spring은 기능이 많은만큼 환경설정이 상당히 복잡하다. 이걸 어려워하는 많은 사용자들을 위해 나온 것이 바로 SpringBoot이다. SpringBoot는 Spring을 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 개발할 수 있도록 돕는다.
SpringBoot란?
여러 핵심 기능을 통해 Spring Framework로 웹 어플리케이션 및 마이크로서비스를 더 빠르고 쉽게 개발할 수 있는 도구이다. 그 핵심 기능은 아래와 같다.
- AutoConfiguration, 자동 설정
- An opinionated approach to configuration, 설정에 대한 독창적인 접근 방식
- The ability to create standalone applications, 독립 실행형 응용 프로그램을 만드는 기능
이러한 기능들이 동작하면서 최소한의 설정으로 Spring Framework 기반 어플리케이션을 만들 수 있는 도구를 제공한다.
SpringBoot를 왜 사용할까?
다시 말하지만 Spring Boot를 사용할 때의 가장 큰 장점은 사용이 간편하고 개발 속도가 빨라진다는 것이다.
또 아래와 같은 장점들이 있다.
- 라이브러리 관리를 알아서 해준다.
- 그냥 Spring을 사용하면 라이브러리 의존성을 직접 관리해왔다. 하지만 Spring Boot에서는 Starter라는 것을 사용해 더욱 간단히 처리할 수 있다.
- 자동 설정
- 위에서 언급했었다. Spring Boot는 프로젝트에 추가된 라이브러리를 기반으로 실행에 필요한 환경을 자동으로 설정해준다.
- 개발에 필요한 라이브러리들을 추가하면 스프링부트가 알아서 설정을 자동으로 처리해준다.
- 내장 Tomcat과 JUnit
- Tomcat 서버를 내장하고 있기 때문에 단지 main() 메소드를 가진 클래스를 실행하면 바로 결과를 볼 수 있다.
- 어디서든 테스트는 중요하다. 그런 테스트 관련 라이브러리들이 기본적으로 포함되어 있어서 테스트 케이스를 쉽게 작성할 수 있다.
- JAR
- 어플리케이션을 다 만들고 테스트까지 마쳤으면 운영 서버에 배포하기 위해서 패키징 작업이 필요하다.
- 스프링 부트는 독립적으로 실행 가능한 어플리케이션을 빠르게 개발하는 것이 목표이다. 그렇기에 JAR 파일로 패키징하여 활용할 수 있다.
이러한 일련의 이유들 때문에 Spring Boot를 사용한다.
'Computer Science > SpringBoot' 카테고리의 다른 글
[SpringBoot] 회원 관리 예제 - 백엔드 개발 (0) | 2021.11.05 |
---|---|
[SpringBoot] SpringBoot 웹 개발 기초 (0) | 2021.11.04 |
[SpringBoot] view 환경설정 (0) | 2021.11.02 |
[SpringBoot] 라이브러리 살펴보기 (0) | 2021.11.02 |
[SpringBoot] SpringBoot 시작하기 (start.spring.io) (0) | 2021.11.01 |
댓글