자바 프로젝트 -> 독립적으로 실행 가능한 JAR
- 독립적으로 실행 가능한 웹 어플리케이션 생성
- 배포할 때 or Docker image에서 실행할 때, JAR 패키징이 유용
- 스프링부트의 주요 목표 中 하나 = Standalone application
JAR 생성하기
- [Maven] mvn clean -> mvn package
- [Gradle] gradle clean -> gradle bootJar (by spring-boot-gradle-plugin 2.0 이상)
java 명령어로 JAR 실행하기
- gradle bootJar로 생성된 JAR는 build/libs/에 위치
- JAR파일 하나에 다른 라이브러리 JAR들이 모두 포함됨
- unzip 명령어를 통해 JAR파일을 풀어보면 확인 가능
- app/BOOT-INF/classes : 내가 생성한 클래스들
- app/BOOT-INF/libs : 의존성 라이브러리들
- app/META-INF/MANIFEST.MF : 어떤 런처를 쓸 지, 빌드를 어떻게 했는지 등의 정보
- Start-Class(메인어플리케이션 클래스)를 Main-Class(런처)로 실행!
그런데 자바는 JAR 내부의 JAR을 읽을 수 있는 표준 방법이 없다!
- 옛날 -> "uber jar"라고 해서 단 1개의 JAR로 통합시키는 방법
- 스프링부트 -> 내장JAR로 묶어놓고, 읽을 수 있는 파일을 만듬 = Loader
- @SpringBootApplication이 선언된 메인 어플리케이션을 실행하는 Loader = JarLauncher
'학습 > Spring' 카테고리의 다른 글
[spring] 스프링부트의 외부 설정 (개념) (0) | 2020.04.11 |
---|---|
[spring] 스프링부트의 SpringApplication 객체 활용하기 (0) | 2020.04.10 |
[spring] 스프링부트의 내장 WAS 이해와 응용 (0) | 2020.04.08 |
[spring] 스프링부트의 AutoConfiguration을 이용한 Bean 등록 (0) | 2020.04.06 |
[spring] 스프링부트의 Bean 등록 2단계 (0) | 2020.03.28 |
댓글