일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- autocomplete
- spring
- Spring Framework
- Mockito #Reflection #Sigleton #Test #JUnit
- tomcat
- LiveTemplate
- 외장톰캣
- 디자인패턴 #싱글톤
- 톰캣
- Today
- Total
자라선
9. JAR 실행 및 패키징 원리 본문
Spring Boot는 jar 확장자로 패키징을 할수 있다.
maven 빌드 툴을 사용시 프로젝트 홈에서 mvn install 명령어를 사용해 리빌딩 시켜주면 <프로젝트>.jar 파일로 패키징이 된다.
패키징은 pom.xml에 다음과 같이 plugin 이 작업해준다.
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
패키징을 할때 의존성 라이브러리들은 모두 패키징된 <프로젝트>.jar 파일 안에다 *.jar 파일로 나열하여 한꺼번에 넣어준다.
그러나 자바는 내장 jar 파일을 로딩하는 표준적인 방법이 없기 때문에 이것을 JarLauncher.class 가 로딩을 도와준다.
패키징된 프로젝트 jar파일을 언패키징하게 되면 볼수있는데 모든 jar 파일을 실행할 때 가장 먼저 META-INF/MANIFEST.MF 파일을 읽어 메타데이터를 확인한다. 아래 예시)
Manifest-Version: 1.0 Implementation-Title: SpringBootInflearn Implementation-Version: 1.0-SNAPSHOT Start-Class: me.tony.SpringBootInflearn.Application Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Build-Jdk-Spec: 1.8 Spring-Boot-Version: 2.2.7.RELEASE Created-By: Maven Archiver 3.4.0 Main-Class: org.springframework.boot.loader.JarLauncher |
그리고 Main-Class로 명시된 클래스를 실행한다. 자바의 스펙은 여기까지이며 그 이후에 나머지 속성들은 Spring개발자들이 구현해놓은 것이다.
JarLauncher를 실행하여 내장 jar 라이브러리들을 읽여들이고 Start-Class로 작성된 개발자의 main 클래스를 실행하여 최종적으로 프로그램을 실행한다.
'Develop > Spring Boot' 카테고리의 다른 글
11. 외부설정 (0) | 2020.07.27 |
---|---|
10. SpringApplication 기본 (0) | 2020.07.27 |
8. SSL or HTTP2 설정 (0) | 2020.07.27 |
7. 내장 톰캣 설정 수정 (0) | 2020.07.27 |
6. 내장 톰캣 (0) | 2020.07.27 |