Python을 이용한 Django, Ruby를 이용한 Ruby on Rails, Javascript를 이용한 Node.js가 있듯이
Spring은 Java를 기반으로 하는 웹 어플리케이션 제작이 가능한 프레임워크이다.
IoC(제어의 역전)와 DI(의존성 주입), AOP(관점지향 프로그래밍) 등의 장점을 갖고 있다.
그럼 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은 많은 기능을 갖고 있지만 그 기능을 사용하기 위한 설정에 많은 시간이 걸린다.
세팅에 사용하는 시간과 에너지를 없애고
비즈니스, 서비스를 만들기 위한 프로그래밍에 집중하여 에너지를 쏟을 수 있게 많은 부분을 자동화 시킨것이 Spring Boot이다.
디테일한 차이점을 나열하자면 다음이 있다.
- 스프링부트의 AutoConfiguration(자동설정) 기능
- Embeded Tomcat을 사용한다.
- 미리 설정되어있는 Starter 프로젝트를 통한 dependency 자동화 기능.
- XML설정을 하지 않아도 된다. Java 코드를 통해 설정 가능하다.
- jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다. (jar file이 클래스 패스에 있는 경우 스프링 부트는 Dispatcher Servlet으로 자동 구성된다)
- 모니터링 관리를 위한 Spring Actuator 기능
- 서비스가 정상적으로 동작하는지 상태 모니터링 기능 제공
Embeded Tomcat
Spring Framework에는 tomcat이 내장되어있어 애플리케이션을 빌드하고 실행하는 것만으로 웹 애플리케이션을 서비스할수 있다. 즉, 따로 tomcat을 설치하거나 매번 버전을 관리해줘야 하는 수고로움을 덜어준다.
Embeded Tomcat이 없던 때는 서블릿 컨테이너로 외부 Tomcat을 설치하고 Java로 작성되어있는 웹 애플리케이션을 Tomcat에 포함시켜줘야했다.
서블릿과 서블릿 컨테이너에 대한 내용은 아래 링크에서 잘 정리해주신분이 계셔서 참고하여 이해했다.
starter를 통한 dependency 자동화
원래는 각자의 dependency들에 호환되는 버전을 하나하나 관리해주어야했고,
그렇게 하나의 버전을 관리하고 나면 다른 dependency까지 영향을 미치고... 호환성 체크를 하고나면 또 버전을 관리해야 하고.. 하는 수고가 있었다.
spring boot starter dependency 를 사용하게 되면서 이러한 작업에 에너지를 쏟을 필요가 없게 되었다.
'[Spring] > Spring 정리' 카테고리의 다른 글
Builder 패턴과 @Builder 어노테이션 (0) | 2023.04.15 |
---|---|
트랜잭션과 @Transactional (2) | 2023.03.15 |
API - 3 (PUT, DELETE) (0) | 2022.09.21 |
REST / REST API / RESTful 간단히 정리 (0) | 2022.09.21 |
API - 2 (GET, POST) (0) | 2022.09.21 |