[Spring] Spring Boot에서 JAR와 WAR 차이 정리
by 우와한개발자
스프링 부트 프로젝트를 진행하다 보면 빌드 결과물로 JAR 또는 WAR 파일이 생성된다. 무슨 차이일까?
1. Archive 아카이브 란?
아카이브는 보관소 또는 묶음 파일을 의미한다. 즉, 여러 개의 파일을 하나로 압축해서 묶어놓은 것이다.
여러 파일을 하나로 묶어 관리하기 편하고 배포가 간단해진다.
2. JAR (Java Archive) 란?
JAR란 자바 어플리케이션(자바로 만든 프로그램)을 하나의 실행 파일로 묶은 파일이다.
1) JAR 특징
- Java 클래스 파일(.class), 리소스(application.yml 등), 메타데이터 포함
- java -jar app.jar 로 단독 실행 가능
- Spring Boot는 내장 서버(예: Tomcat embed) 를 함께 패키징할 수 있어, 별도 Tomcat 설치 없이 실행 가능
2) JAR 파일 구조
app.jar
├── META-INF/
│ └── MANIFEST.MF
└── BOOT-INF/
├── classes/
│ ├── com/yourapp/... (내 코드 .class)
│ └── application.yml (리소스)
└── lib/
├── spring-boot-*.jar
├── spring-web-*.jar
├── tomcat-embed-*.jar ← 내장 톰캣(서버 라이브러리)
└── 기타 의존성들...
3. WAR ( Web Archive) 란?
WAR란 외부 WAS에 배포되는 웹 어플리케이션(프로그램)을 패키징한 파일이다.
보통 Tomcat 같은 서블릿 컨테이너(실무에선 WAS라고도 부름) 에 배포해서 실행한다.
1) WAR 특징
- 단독 실행이 아니라, 외부 서버(Tomcat 등)가 로딩해서 실행
- 하나의 Tomcat에 여러 WAR를 올려 운영하는 방식이 흔함
2) WAR 파일 구조
app.war
├── META-INF/
└── WEB-INF/
├── web.xml (있을 수도/없을 수도)
├── classes/
│ └── com/yourapp/... (내 코드)
└── lib/
├── spring-web-*.jar
├── 기타 의존성...
└── (보통 tomcat 관련은 없음)
4. JAR vs WAR 비교
| 구분 | JAR | WAR |
| 의미 | Java Archive | Web Application Archive |
| 용도 | 일반 Java 애플리케이션, 라이브러리 | 웹 애플리케이션 |
| 실행 방식 | java -jar app.jar | 외부 서버에 배포 필요 |
| 서버 | 내장 서버 포함 가능 | 외부 서블릿 컨테이너 필요 |
| 구조 | 비교적 자유로움 | WEB-INF/ 구조 필수 |
| Spring Boot | 기본 패키지 방식 | (원하면 변경 가능) |
| 독립 실행 | 가능 | 불가능 (서버 필요) |
| 배포 편의성 | 매우 편리 | 서버 설정 필요 |
'프레임워크 > Spring' 카테고리의 다른 글
| [Spring] Bean 등록 과 의존성 주입(DI) 설정 - XML 방식 (0) | 2026.03.26 |
|---|---|
| [Spring] Bean과 DI(의존성 주입)란? - Bean 생명주기, 생성자 / setter /필드 주입 정리 (0) | 2026.03.26 |
| [Spring] 스프링 IoC 컨테이너란? - BeanFactory, ApplicationContext 정리 (0) | 2026.03.26 |
| [Spring] 스프링 프레임워크(Spring Framework)란? - IoC / DI / AOP / POJO 개념 정리 (0) | 2026.03.26 |
| [Spring] 프레임워크와 라이브러리의 차이 / 스프링 프레임워크 (Spring Framework)란? (0) | 2026.01.18 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자