개발 일지

Spring boot With Embedded Tomcat

북극곰은콜라 2022. 11. 23. 22:23
반응형


Spring boot with Embedded Timcat 동작 원리

Jar 파일 boot 구조

  • 일반적으로 Execuexecutable jar 는 META-INF의 MANIFEST.MF의 Main-Class를 실행

Jar / root

META-INF

MANIFEST.MF

Manifest-Version: 1.0
Created-By: Maven Jar Plugin 3.2.0
Build-Jdk-Spec: 11
Implementation-Title: xxxx-xxx-xxx
Implementation-Version: 0.0.1-SNAPSHOT
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.xx.yyy.xxx.XxxxxWebfluxApplication
Spring-Boot-Version: 2.4.3
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx

MANIFEST를 확인해보면 main 클래스를 org.springframework.boot.loader.JarLauncher 로 잡고있다.


JarLauncher

  • Launcher를 최종 구현한 클래스
  • 이 Launcher를 통해서 context를 구성한다

Launcher Class

protected void launch(String[] args) throws Exception {
    JarFile.registerUrlProtocolHandler();
    ClassLoader classLoader = createClassLoader(getClassPathArchives());
    launch(args, getMainClass(), classLoader);
}

createClassLoader()

  • 해당 메서드를 통해 LaunchedURLClassLoader를 생성하며 URLClassLoader를 상속 받으며, parent로 SystemClassLoader (AppClassLoader)를 갖는다

 

 

 

반응형

'개발 일지' 카테고리의 다른 글

DID 란  (0) 2022.11.25
Spring TransactionEventListener  (0) 2022.11.23
MDC 란  (0) 2022.11.23
QuerydslPredicate 란  (0) 2022.11.23
Nginx vs HAProxy  (0) 2022.11.23