티스토리 뷰
이 글에서는 초보자 관점으로 이해하기 쉽게 스프링과 스프링 부트에 대해서 알아보도록 하겠습니다.
저 뿐 아니라 많은 분들이 스프링(Spring)과 스프링 부트(Spring Boot)의 차이점을 잘 모르고 사용하는 경우가 있습니다.
그 차이점과 장점 등등 이 글을 통해 완벽하게 이해할 수 있게 될 것입니다.
우선 Spring과 Spring Boot는 모두 스프링 프레임워크를 기반으로 한 자바 웹 개발 프레임워크입니다.
하지만, 둘 간에는 몇가지 차이점이 존재합니다.
스프링(Spring)
Spring은 스프링 프레임워크의 핵심 모듈을 모아서 만든 프레임워크입니다.
우리가 흔히 말하는 스프링은 여러 가지 관점에서 사용하고 있는데요.
스프링 생태계 자체를 스프링이라고 얘기하는 경우도 있고, 스프링 프레임워크를 스프링이라고 얘기하는 경우가 있습니다.
지금 여기서는 스프링 프레임워크를 스프링이라 하고 설명하도록 하겠습니다.
스프링 프레임워크는 여러 기술에 필요한 모듈들을 모아서 개발을 편리하게 사용할 수 있게 해주는 프레임워크입니다.
이러한 스프링의 특징으로는 IoC, DI, AOP, POJO방식, 오픈소스이고 경량급 등등의 장점들이 있습니다.
제 블로그 다른 글에 스프링에 대해 자세하게 작성한 글이 있으므로 이 글에서는 자세한 설명은 건너뛰도록 하겠습니다.
아래 링크를 참고해주시면 될 것 같습니다.
스프링은 개발을 편리하게 해주는 라이브러리와 모듈들을 모아둔 프레임워크이기 때문에 개발을 편리하게 할 수 있다는 장점이 있습니다만, 개발자가 직접 설정 파일을 작성하여 스프링 컨테이너를 구성하고, 필요한 빈 객체를 등록하고, 빈 객체 간의 의존성 설정을 해주어야 합니다.
필요한 라이브러리의 버전도 하나하나 맞춰주어야 하므로 번거로운 작업이 생길 수 있습니다.
즉, 스프링은 초기 환경 설정 시 시간이 많이 할애되는 문제가 있습니다.
이러한 문제를 해결해 주는 것이 스프링 부트(Spring Boot) 입니다.
스프링 부트(Spring Boot)
스프링 부트는 스프링(Spring) 프레임워크를 보다 쉽게 사용할 수 있도록 만든 프레임워크입니다.
스프링 부트에서는 개발자가 설정 파일을 작성할 필요 없이, 프로젝트의 설정과 라이브러리 의존성을 자동으로 처리해 주는 기능을 제공합니다. 최근 들어서는 스프링을 사용하면 스프링 부트는 그냥 기본적으로 같이 사용하고 있습니다. 둘은 하나라고 생각하시면 됩니다.
스프링 부트는 스프링에서 제공하는 기능들을 자동으로 설정하여 개발자가 보다 쉽게 스프링을 사용할 수 있게 해줍니다.
예를 들어, 스프링 부트는 스프링 MVC, 스프링 Data JPA, 스프링 Security 등의 기능을 자동으로 설정하며, 개발자가 별로도 설정 파일을 작성하지 않아도 사용할 수 있게 해줍니다.
또한, 스프링 부트는 Actuator라는 모니터링과 관리를 위한 기능을 제공하여 애플리케이션의 매트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능도 제공합니다.
스프링은 애플리케이션의 웹을 띄우기 위해 Tomcat 같은 웹서버를 외부에서 가져다 사용해야 하는 번거로움이 있는데, 스프링은 Tomcat 같은 내장 서버를 이용함으로써 별도의 웹 서버를 설치하지 않아도 되는 장점도 있습니다.
위와 같이 스프링 부트 설정에 start dependency만 추가해 주면 편리하게 여러 라이브러리와 내장 톰캣 등을 사용할 수 있습니다. 기본적으로 버전 관리(의존성 관리)도 알아서 해주기 때문에 의존성에 대해 깊은 고민을 할 수고도 덜게 되었습니다.
하지만 스프링 부트는 모든 라이브러리의 버전을 관리해 주는 것이 아닌 시스템에 일반적으로 사용되는 주요 라이브러리들에 대해서만 버전 관리를 해주기 때문에 위 사진의 p6spy-spring-boot-starter:1.9.0 같이 버전을 써넣어주어야 합니다.
추가로 특정 버전이 필요하다거나, 해당 버전에 버그가 있다거나, 레거시 시스템에 호환성 때문에 혹은 회사 정책 등등의 이유로 명시적으로 버전을 기재하여 줄 수도 있습니다.
간단하게 스프링과 스프링 부트에대해 요약하자면
스프링은 개발을 편리하게 도와주는 프레임워크
스프링 부트는 스프링을 편리하게 도와주는 프레임워크입니다.
스프링은 편리한 기능을 제공하지만, 직접 설정하고 관리해야 하는 번거로움이 있으며 이것을 스프링 부트가 편리하게 해결해 줍니다. 편리함에 편리함이라고 할 수 있겠네요.
붕어빵 가게로 예를 간단하게 들어보겠습니다.
스프링은 붕어빵 틀, 스프링 부트는 붕어빵 만드는 기계라고 생각하면 될 것 같습니다.
붕어빵 틀(스프링)이 없다면 붕어빵을 팔기 위해 열심히 손으로 다듬고 만드는 방법을 생각하고 레시피를 직접 제조하고 등등 여러 가지 번거로움이 있을 겁니다. 제대로 된 레시피, 틀이 없기 때문에 맘대로 만들었다고 해도 제대로 만들어졌는지 맛이 있는지도 보장하지 못하죠.
붕어빵 틀(스프링)이 있다면 우리는 틀이 제공하는 대로 만들어주면 됩니다.
물론 틀을 보고 만들어도 시간이 걸리고 우리가 직접 재료 준비에 이런저런 작업으로 시간이 걸리는 것은 어쩔 수 없습니다.
하지만 붕어빵 만드는 로봇(스프링 부트)이 있다면 우리는 로봇에 간단하게 설정만 해주면 알아서 자동화 되어 만들어준다는 장점이 생깁니다. 즉 붕어빵 틀(스프링)을 이용하여 붕어빵 로봇(스프링 부트)이 아주 간편하고 시간을 절약하며 붕어빵을 만들어 줍니다.
출처
인프런 김영한 스프링부트 - 핵심원리와 활용
'Spring | Spring Boot' 카테고리의 다른 글
[Spring] 싱글톤 패턴이란? 그리고 스프링에서의 싱글톤 (0) | 2024.04.25 |
---|---|
[Spring] 빈 생명주기 콜백 - 꼬리에 꼬리를 물고 완벽 이해하기 (1) | 2024.04.24 |
[Spring] IoC(제어의 역전)와 DI(의존성 주입)의 완벽 이해 (0) | 2024.03.20 |
[Spring] 스프링(Spring)이란? (0) | 2024.03.20 |
[Spring] 스프링 컨테이너와 자동/수동 빈 등록 개념 정리 (0) | 2024.03.12 |
- Total
- Today
- Yesterday
- 타임리프
- 타임리프 기본기능
- 스프링 컨테이너
- 요청매핑
- 스프링 빈
- Spring
- erd툴
- 인터페이스 추상클래스 비교
- 스프링http
- RequiredArgsConstruct
- 스프링
- Overloding
- redirectattribute
- 빈생명주기콜백
- 추상클래스
- HttpServletRequest
- 인터페이스 추상클래스 차이
- 인터페이스
- 객체지향설계원칙
- 네이버지도크롤링
- 스프링특징
- 크롤링
- erd editor
- 인식안됨
- Servlet
- HTTP요청
- Thymeleaf
- 요청데이터
- 자바
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |