springboot 클래스 로 더(org.springframework.boot.loader)과정 상세 설명
6759 단어 springboot클래스 로 더
시험:maven 포장 사용
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass> </mainClass>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
각 설정 항목 의 역할 자체 바 이 두~이렇게 생 성 된 jar 패키지,압축 도구 로 열 면 이 렇 습 니 다.
META-INF 에서 MANIFEST.MF 파일 을 열 어 보 세 요.(메모 장 을 열 수 있 습 니 다.)
이 클래스 의 로 더 는 다음 과 같 습 니 다:PropertiesLauncher,문서 바 이 두 번역 은 다음 과 같 습 니 다.
Launcher for archives with user-configured classpath and main class via a properties file. This model is often more flexible and more amenable to creating well-behaved OS-level services than a model based on executable jars.
Looks in various places for a properties file to extract loader settings, defaulting to application.properties either on the current classpath or in the current working directory. The name of the properties file can be changed by setting a System property loader.config.name (e.g. -Dloader.config.name=foo will look for foo.properties. If that file doesn't exist then tries loader.config.location (with allowed prefixes classpath: and file: or any valid URL). Once that file is located turns it into Properties and extracts optional values (which can also be provided overridden as System properties in case the file doesn't exist):
loader.path: a comma-separated list of directories (containing file resources and/or nested archives in .jar or .zip or archives) or archives to append to the classpath. BOOT-INF/classes,BOOT-INF/lib in the application archive are always used
loader.main: the main method to delegate execution to once the class loader is set up. No default, but will fall back to looking for a Start-Class in a MANIFEST.MF, if there is one in ${loader.home}/META-INF.
시작 프로그램 은 속성 파일 을 통 해 사용자 가 설정 한 클래스 경로 와 주 클래스 를 사용 하여 압축 파일 을 만 드 는 데 사 용 됩 니 다.실행 가능 한 jar 모델 을 바탕 으로 하 는 모델 에 비해 이런 모델 은 일반적으로 더욱 유연 하고 성능 이 좋 은 OS 급 서 비 스 를 만 들 기 쉽다.
다른 위치 에서 속성 파일 을 찾 아 불 러 오 는 프로그램 설정 을 추출 합 니 다.기본 값 은 프로그램 입 니 다.속성 은 현재 클래스 경로 나 현재 작업 디 렉 터 리 에 있 습 니 다.속성 파일 의 이름 은 시스템 속성 설정 을 통 해 로 딩 프로그램.config.name 을 변경 할 수 있 습 니 다.(예:-Dloader.config.name=foo 는 식품 속성 을 찾 습 니 다.이 파일 이 존재 하지 않 는 다 면 loader.config.location(허용 되 는 접두사 classpath:file:또는 유효한 URL 사용)을 시도 합 니 다.이 파일 을 찾 으 면 속성 으로 변환 하고 선택 가능 한 값 을 추출 합 니 다(이 파일 이 존재 하지 않 으 면 시스템 속성 으로 덮어 쓸 수도 있 습 니 다).
로 딩 프로그램.path:쉼표 로 구 분 된 디 렉 터 리 목록(파일 자원 과/또는.jar 또는.zip 에 포 함 된 압축 파일 포함)또는 클래스 경로 에 추가 할 압축 파일 입 니 다.항상 프로그램 파일 에 있 는 BOOT-INF/classes,BOOT-INF/lib 를 사용 합 니 다.
로 더.main:클래스 로 더 를 설정 한 후 의뢰 하 는 주 방법 을 실행 합 니 다.기본 값 은 없 지만 목록.MF 로 되 돌아 갑 니 다.${로 더.home}/중간 가이드 가 있 으 면.
이것 도 설정 입 니 다.jar 패키지 외부 프로필 의 시작 방식 을 사용 하 는 방법 입 니 다.Liux 에서 우리 의 시작 스 크 립 트 는 대응 하 는 클래스 로 더 를 사용 하여 시작 해 야 합 니 다.
다른 것 으로 설정 하면(
<layout>ZIP</layout>
이 설정 을 제거 하면 main-class 는 JarLauncher 가 됩 니 다)예 를 들 어:JarLauncherLauncher for JAR based archives. This launcher assumes that dependency jars are included inside a /BOOT-INF/lib directory and that application classes are included inside a /BOOT-INF/classes directory.
JAR 기반 파일 시작 프로그램.이 시작 프로그램 은 의존 항목 jar 가/BOOT-INF/lib 디 렉 터 리 에 포함 되 어 있다 고 가정 합 니 다.응용 프로그램 류 는/BOOT-INF/classes 디 렉 터 리 에 포함 되 어 있 습 니 다.
프로젝트 시작 에 실 패 했 습 니 다.
springboot 프로젝트 가 시 작 됩 니 다.우리 가 만 든 SpringApplication 이 아 닌 해당 클래스 로 더 의 main 방법 을 호출 합 니 다.
Spring Boot Loader 는 SpringBoot 포장 을 실행 하 는 데 사용 되 는 표준 jar 를 제공 합 니 다.이 표준 은 바로 우리 의 클래스 로 더 입 니 다.
다음은 하나의 예 입 니 다.그림 에는 구조 방법 과 유형 방법 이 있 습 니 다.
우정 링크
springboot 전체 api
PropertiesLauncher 문서
JarLauncher 문서
WarLauncher 문서
springboot 클래스 로 더(org.spring from work.boot.loader)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.springboot 클래스 로 더 에 관 한 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.