순서
1. Jar vs War
2. Jar 구성 요소
3. War 구성 요소
✅ Jar vs War
- 스프링 프로젝트를 시작(https://start.spring.io/)할 때마다 보는 Jar, War
➤ 공통점
- 자바의 툴을 이용하여 생성되는 압축 파일
- 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성파일)들을 패키징
➤ 차이점
- Jar(Java ARchive)
: 자바 클래스 파일과, 라이브러리, 리소스들을 하나의 파일로 모아서 압축한 파일 포맷
: 주로 자바 어플리케이션을 배포하기 위한 형식
: 원하는 구조로 구성 가능
: JRE만으로 실행 가능
- War(Web application ARchive)
: JSP, HTML 또는 웹 애플리케이션을 이루는 자원들을 하나의 파일로 모아서 압축한 Jar 파일의 일종
: 주로 웹 어플리케이션을 배포하기 위한 형식
: WEB-INF, META-INF 구조를 따라야함
: 웹 서버나 WAS가 있어야 실행 가능
✅ Jar 구조 (with 스프링)
➤ META-INF
- 프로젝트 매니페스트 파일을 포함하는 폴더
**매니페스트 파일 : 파일 그룹을 위한 메타데이터(이름, 버전, 라이선스, 프로그램 구성 등)를 포함하는 파일
- 일반적인 Jar 매니페스트에서 Main-Class는 Main 메소드가 있는 클래스로 설정되지만
스프링부트의 Main-Class에서는 JarLauncher라는 클래스로 설정됨
➤ org
- spring boot loader classes 모듈 저장됨
➤ BOOT-INF
- 개발자가 직접 작성한 클래스 파일들과, 의존성 주입을 통한 jar 파일들로 구성됨
✅ War 구조 (with 스프링)
➤ META-INF
- jar와 마찬가지로 매니페스트 파일을 포함하는 폴더
- 글의 첫 부분에서 War 파일은 웹 서버나 WAS가 있어야 실행 가능하다고 했는데
스프링부트에서는 단독으로 실행 가능한 경우도 있음
➤ org
- spring boot loader classes 모듈 저장
➤ WEB-INF
- 개발자가 직접 작성한 class와 jar 파일, view 파일까지 포함된 디렉토리
- 웹 어플리케이션의 사전 정의된 구조를 따르기 때문에 외장 WAS나 JSP를 사용할 일이 있다면
WAR를 이용하여 배포해야 함
'개발 공부' 카테고리의 다른 글
[웹 서버, WAS] feat. 정적 페이지, 동적 페이지 (0) | 2023.05.29 |
---|---|
[렌더링] feat. SSR+MPA, CSR+SPA (0) | 2023.05.23 |
[트랜잭션] feat. 스프링 AOP (0) | 2023.05.22 |
[프록시 패턴] feat. 스프링 AOP, JPA (0) | 2023.05.18 |
[RestController] feat. ResponseBody (0) | 2023.05.16 |