Spring Boot VS Spring MVC

yedi·2024년 10월 17일

Web 프로젝트를 생성할 때, WEB-INF 폴더의 존재 여부에 따라 프로젝트 구조가 다르다는 점을 확인할 수 있습니다.
이를 기준으로 전통적인 Dynamic Web Project와 Spring Boot Project 간의 차이점을 비교해보겠습니다.


1. Dynamic Web Project (Spring MVC)

Java SE(Java Platform, Standard Edition)
: Java 프로그래밍 언어의 기본적인 플랫폼으로, Java 기반 애플리케이션을 개발하는 데 필요한 핵심 API와 라이브러리를 제공합니다.
: Java SE는 데스크톱, 서버, 임베디드 환경 등에서 실행되는 일반 애플리케이션 개발을 위한 표준입니다.

Java EE(Java Platform, Enterprise Edition)
: 대규모 엔터프라이즈 애플리케이션 개발을 위한 표준 플랫폼입니다.
: Java SE(Standard Edition)를 확장한 형태로, 웹 애플리케이션, 대규모 분산 시스템, 트랜잭션 처리 시스템 등의 복잡한 엔터프라이즈 애플리케이션을 개발하는 데 필요한 기능과 라이브러리들을 제공합니다.

  • WEB-INF 폴더 : 기본적으로 존재함.
  • 프로젝트 구조
    : 전통적인 Java EE 기반의 웹 애플리케이션 구조로, 웹 리소스는 src/main/webapp/WEB-INF 폴더에 위치하며 JSP 파일과 같은 뷰 파일이 WEB-INF/views 폴더에 배치됩니다.
    : 서블릿 설정 파일(web.xml)도 WEB-INF 폴더 내에 위치합니다.
  • 주로 사용하는 템플릿 엔진
    : 주로 JSP를 사용하며, JSP 파일은 WEB-INF/views/ 에 저장됩니다.
  • 서버 사용
    : 내장 서버가 없으므로, 외부 톰캣, 제티 등의 WAS(Web Application Server)에 배포하여 실행해야 합니다.
  • 설정 방식
    : web.xml과 같은 XML 설정 파일을 사용하며, Spring과의 통합을 위해서는 추가 설정이 필요합니다.
    : Spring MVC 프로젝트는 전통적으로 복잡한 설정을 요구하지만, Spring의 Java Config로 어느 정도 간소화할 수 있습니다.
  • Dynamic Web Project 구조 예시
    src/
    └── main/
        ├── java/          // Java 소스 코드
        ├── webapp/
        │   ├── WEB-INF/
        │   │   ├── views/  // JSP 파일
        │   │   └── web.xml // 서블릿 설정 파일
        └── resources/      // 정적 리소스 및 설정 파일

2. Spring Boot Project

  • WEB-INF 폴더
    : 기본적으로 존재하지 않음.

  • 프로젝트 구조
    : Spring Boot는 자동 설정(auto-configuration) 기능을 제공하며, 내장 톰캣과 같은 서버를 사용해 간소화된 구조로 동작합니다.
    : 웹 리소스나 뷰 파일들은 주로 src/main/resources/templates(Thymeleaf, Freemarker 같은 템플릿 엔진)와 src/main/resources/static(정적 리소스) 폴더에 배치됩니다.

  • 주로 사용하는 템플릿 엔진
    : Spring Boot에서는 JSP 대신 Thymeleaf, Freemarker, Mustache 등을 권장합니다.
    : JSP를 사용할 수는 있지만 권장되지 않으며, 설정이 더 복잡할 수 있습니다.

  • 내장 서버

    참고
    https://velog.io/@yedi/Spring-Spring-Boot-%EB%82%B4%EC%9E%A5-%ED%86%B0%EC%BA%A3-%EC%8B%A4%ED%96%89-%EA%B3%BC%EC%A0%95

    : Spring Boot는 내장 톰캣, 제티, 언더토우와 같은 서버를 기본적으로 사용하며, 별도의 서버 설정 없이 애플리케이션을 쉽게 실행할 수 있습니다.

  • 설정 방식
    : application.properties 또는 application.yml 파일을 통해 설정을 관리하며, 복잡한 XML 기반 설정이 거의 필요하지 않습니다.

  • Spring Boot 구조 예시

    src/
    └── main/
        ├── java/          // Java 소스 코드
        ├── resources/
        │   ├── templates/  // Thymeleaf 템플릿 파일
        │   └── static/     // CSS, JS, 이미지 등 정적 리소스
        └── application.properties

주요 차이점 요약

구분 Dynamic Web Project (Spring MVC) Spring Boot Project
WEB-INF 폴더 기본적으로 존재 기본적으로 없음
프로젝트 구조 전통적인 Java EE 웹 구조, 외부 서버 사용 간소화된 구조, 내장 서버 사용
템플릿 엔진 JSP 사용, 주로 WEB-INF/views/에 위치 Thymeleaf, Freemarker, Mustache (JSP도 가능하지만 권장 안 됨)
서버 외부 톰캣, 제티 등 WAS에 배포해야 함 내장 톰캣, 제티, 언더토우 사용
설정 방식 web.xml 및 XML 설정 파일 application.properties, Java Config
복잡성 설정이 복잡할 수 있으며, 수동으로 처리해야 할 부분 많음 자동 설정으로 간소화됨

전통적인 구조와 JSP 같은 기존 방식을 그대로 사용하고 싶다면, Dynamic Web Project가 적합합니다.
간소화된 개발을 원하거나 내장 서버로 간편하게 웹 애플리케이션을 실행하고 싶다면, Spring Boot Project를 선택하는 것이 좋습니다.

0개의 댓글