Spring
Java 기반의 웹 애플리케이션 개발을 위한 오픈소스 프레임워크
Spring MVC
웹 애플리케이션 개발에 있어 MVC 패턴을 적용할 수 있도록 Spring에서 제공하는 프레임워크
Spring Boot
Spring 설정들을 자동화하는 Spring 기반의 프레임워크
정의로 정리가 잘 안되지만.. 느낀 바로는 Spring
이라는 웹 애플리케이션 개발을 위해 제공되는 탄탄하고 거대한 프레임워크가 있는데, 이를 기반으로 개발자가 좀 더 쉽고 편리하게 사용할 수 있도록 제공되는 프레임워크들이 Spring MVC
Spring Boot
이다. Spring
Process
키워드로 찾아봐도 내용이 안나오고 Spring
Architecture
관련 내용들만 나와서 일단은 이렇게 이해하기로 했다.
➕ 프로젝트를 생성할때 Spring MVC
라이브러리를 임포트하는데 여러 글들에서는 Spring MVC 프레임워크
라고 표현해서 혼란스럽다. 내가 보기엔 라이브러리 같은데.. 어떤 글을 봤는데 필자가 재밌게 풀어서 써주셔서 첨부해본다. 틀안에서 작업한다는 느낌이 들었으니 프레임워크로 정의할련다. 공식 문서에도 Spring MVC Framework
라고 나와있으니..
📢 쉽게 말해, 내가 무언가를 가져다가 쓴다는 느낌이 든다면 그것을 라이브러리를 사용하는 것이고(내가 갑), 내가 무언가의 틀 안에서 작업한다는 느낌이 든다면 프레임워크입니다.(프레임워크가 갑)
Spring MVC
와 Spring Boot
의 가장 큰 차이는 설정의 자동화 라고 생각한다. Spring MVC
구조의 경우 XML
파일들에 Dispatcher Servlet
Handler Mapping
View Resolver
설정들을 해줘야한다. 수업을 들으면서도 각종 XML
파일들에 설정을 하고 그 설정들을 이해하는게 가장 어려운 부분이었다. 하지만 Spring Boot
의 경우 @
만 적절하게 명시해주면 Spring
이 알아서 다 처리해준다!
뿐만아니라 이 둘은 WAS 내장 여부 차이도 있다. Servlet
기반의 프로그램을 실행하기 위해서는 WAS
가 필요한데, Spring MVC
프로젝트의 경우 따로 Tomcat
과 같은 WAS
서버를 설치해줘야 한다. 반면 Spring Boot
에는 Tomcat
이 내장되있어 별도의 웹 애플리케이션 설치가 필요없다.
앞서 언급했듯 Spring MVC
와 Spring Boot
모두 Spring
기반의 프레임워크다. 실제로 IntelliJ IDEA
에서 Spring Boot
프로젝트를 설정할때 초기 의존성을 설정하는 부분에서 Spring Web
을 추가해주는데, 이 과정은 Spring MVC
기반의 프로젝트를 생성함을 의미한다. 결론적으로 나는 현재 Spring MVC
구조의 프로젝트를 진행하고 있으며, 설정의 자동화를 위해 Spring Boot
프레임워크를 사용하고 있다.
최근에 Spring Boot
를 공부하면서 들게된 의문점이다. 처음에 웹프레임워크
과목을 수강할때 Eclipse
에서 Spring MVC
프로젝트를 생성해서 프로그래밍 했었고 다음 학기에도 Spring MVC
프로젝트로 수업을 듣다가 학기 마지막쯤 Spring Boot
를 잠깐 배웠었다. 그러고 약 1년 넘게 한참동안 잊고 살다가 Spring Boot
를 다시 맞이하니 너무 생소해...🤭 그리고 Spring MVC
프로젝트를 사용하던 기간이 더 길었던 터라 온갖 Annotation
이 낯설게만 느껴졌다! 다시 접했을때 이 둘은 아예 다른 프레임워크인가 까지 생각해봤는데 계속 사용하다보니 Spring Boot는 기존 Spring에서 하던 설정들을 간결하게 할 수 있는 프레임워크
결국 Spring 기반
이라는 것을 깨달았다.
📌 cil05265. "MVC 웹 프레임워크와 라이브러리 및 스프링 MVC", Yanagi.log, 3 Aug. 2021
📌 GeeksforGeeks. Difference between Spring and Spring Boot
📌 Spring Docs. "17. Web MVC framework Part V. The Web"