Web 프로젝트를 생성할 때, WEB-INF 폴더의 존재 여부에 따라 프로젝트 구조가 다르다는 점을 확인할 수 있습니다.
이를 기준으로 전통적인 Dynamic Web Project와 Spring Boot Project 간의 차이점을 비교해보겠습니다.
Java SE(Java Platform, Standard Edition)
: Java 프로그래밍 언어의 기본적인 플랫폼으로, Java 기반 애플리케이션을 개발하는 데 필요한 핵심 API와 라이브러리를 제공합니다.
: Java SE는 데스크톱, 서버, 임베디드 환경 등에서 실행되는 일반 애플리케이션 개발을 위한 표준입니다.
Java EE(Java Platform, Enterprise Edition)
: 대규모 엔터프라이즈 애플리케이션 개발을 위한 표준 플랫폼입니다.
: Java SE(Standard Edition)를 확장한 형태로, 웹 애플리케이션, 대규모 분산 시스템, 트랜잭션 처리 시스템 등의 복잡한 엔터프라이즈 애플리케이션을 개발하는 데 필요한 기능과 라이브러리들을 제공합니다.
src/main/webapp/WEB-INF 폴더에 위치하며 JSP 파일과 같은 뷰 파일이 WEB-INF/views 폴더에 배치됩니다.web.xml)도 WEB-INF 폴더 내에 위치합니다.WEB-INF/views/ 에 저장됩니다.web.xml과 같은 XML 설정 파일을 사용하며, Spring과의 통합을 위해서는 추가 설정이 필요합니다.src/
└── main/
├── java/ // Java 소스 코드
├── webapp/
│ ├── WEB-INF/
│ │ ├── views/ // JSP 파일
│ │ └── web.xml // 서블릿 설정 파일
└── resources/ // 정적 리소스 및 설정 파일WEB-INF 폴더
: 기본적으로 존재하지 않음.
프로젝트 구조
: Spring Boot는 자동 설정(auto-configuration) 기능을 제공하며, 내장 톰캣과 같은 서버를 사용해 간소화된 구조로 동작합니다.
: 웹 리소스나 뷰 파일들은 주로 src/main/resources/templates(Thymeleaf, Freemarker 같은 템플릿 엔진)와 src/main/resources/static(정적 리소스) 폴더에 배치됩니다.
주로 사용하는 템플릿 엔진
: Spring Boot에서는 JSP 대신 Thymeleaf, Freemarker, Mustache 등을 권장합니다.
: JSP를 사용할 수는 있지만 권장되지 않으며, 설정이 더 복잡할 수 있습니다.
내장 서버
: 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를 선택하는 것이 좋습니다.