Spring Boot - 독립적으로 실행 가능한 JAR
업데이트:
스프링 부트 원리
독립적으로 실행 가능한 JAR
JAR 파일 구조와 동작 원리 (스프링 부트의 전략)
- 
    
cli로mvn packgage(= ./gradlew build)를 입력하면 실행 가능한JAR파일 하나가 생성된다. - 
    
JAR파일안에 내가 만든 애플리케이션 클래스와dependency로 주입받은 라이브러리가 패키지로 구분되어 들어있다. - 
    
기본적으로 자바에는 내장
JAR를 로딩하는 표준적인 방법이 없다. - 
    
스프링 부트는
JAR안에 내장JAR로 묶어놓고, 그것을 읽을 수 있는 로더(org.springframework.boot.loader.jar.JarFile)를 사용해서 내장JAR를 읽는다. - 
    
메인 메서드를 갖고있는 클래스는 런처(
org.springframework.boot.loader.Launcher)를 사용해서 실행한다. - 
    
spring-boot-maven-plugin이JAR파일에 아래와 같은 패키지 구조로 만들어준다.
- 기본적인 
JAR실행방식 :MANIFEST.MF->Main-Class: org.springframework.boot.loader.JarLauncher실행 ->Launcher가 내장JAR를 읽는org.springframework.boot.loader.jar.JarFile실행 
 - 기본적인 
 - 
    
이 모든 방식은 스프링 부트가 독립적인 애플리케이션을 만들기 위한 전략이다.
 
스프링 부트 원리 정리
의존성 관리
- 의존성에 
spring-boot-starter-web만 추가해도 기본적으로 필요한 많은 외부 라이브러리를 가져온다. - 어떻게? 
maven - parent - spring-boot-dependencies에서 스프링부트가 사용하는 주요 라이브러리의 버전을 관리한다. 
자동 설정
EnableAutoConfiguration의 역할ComponentScan으로 빈 스캔 한 번 +EnableAutoConfiguration으로 스캔 한 번하여 총 두 번 스캔한다.
내장 웹 서버
- 스프링 부트 자체가 서버가 아니라 내장 서버(
tomcat,netty,jetty등)를 자동 설정을 사용하여 실행하는 것이다. 
독립적으로 실행 가능한 JAR
JAR파일의 구조와 동작 원리를 이해한다.
      
    
댓글남기기