부록 D : 자동 구성 주석 테스트
이 부록에서는 @…Test
에서는 Spring Boot가 응용 프로그램 조각을 테스트하기 위해 제공 자동 구성 주석에 .
10.D.1. 테스트 조각
다음 표에는 @…Test
응용 프로그램 조각을 테스트하는 데 사용할 수있는 다양한 주석과 기본적으로 가져 오는 자동 구성이 나와 있습니다.
테스트 슬라이스 |
가져온 자동 구성 |
@DataJdbcTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration
|
@DataJpaTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManagerAutoConfiguration
|
@DataLdapTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration
|
@DataMongoTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration org.springframework.boot.autoconfigure.data.mongo.MongoReactiveRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
|
@DataNeo4jTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
|
@DataR2dbcTest
|
org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.data.r2dbc.R2dbcTransactionManagerAutoConfiguration org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
|
@DataRedisTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration
|
@JdbcTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration
|
@JooqTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration
|
@JsonTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration org.springframework.boot.test.autoconfigure.json.JsonTestersAutoConfiguration
|
@RestClientTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerAutoConfiguration org.springframework.boot.test.autoconfigure.web.client.WebClientRestTemplateAutoConfiguration
|
@WebFluxTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration org.springframework.boot.autoconfigure.security.oauth2.client.reactive.ReactiveOAuth2ClientAutoConfiguration org.springframework.boot.autoconfigure.security.oauth2.resource.reactive.ReactiveOAuth2ResourceServerAutoConfiguration org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration org.springframework.boot.autoconfigure.security.reactive.ReactiveUserDetailsServiceAutoConfiguration org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration org.springframework.boot.test.autoconfigure.web.reactive.WebTestClientAutoConfiguration
|
@WebMvcTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoConfiguration org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration org.springframework.boot.test.autoconfigure.web.servlet.MockMvcAutoConfiguration org.springframework.boot.test.autoconfigure.web.servlet.MockMvcSecurityConfiguration org.springframework.boot.test.autoconfigure.web.servlet.MockMvcWebClientAutoConfiguration org.springframework.boot.test.autoconfigure.web.servlet.MockMvcWebDriverAutoConfiguration
|
@WebServiceClientTest
|
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration org.springframework.boot.autoconfigure.webservices.client.WebServiceTemplateAutoConfiguration org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerAutoConfiguration org.springframework.boot.test.autoconfigure.webservices.client.WebServiceClientTemplateAutoConfiguration
|
부록 E : 실행 가능한 Jar 형식
이 spring-boot-loader
모듈을 통해 Spring Boot는 실행 가능한 jar 및 war 파일을 지원할 수 있습니다. Maven 플러그인 또는 Gradle 플러그인을 사용하는 경우 실행 가능 jar이 자동으로 생성되므로 일반적으로 작동 방식에 대한 세부 사항을 알 필요가 없습니다.
다른 빌드 시스템에서 실행 가능한 jar 파일을 작성해야하거나 기본 기술에 대해 궁금한 점이있는 경우이 부록에서는 몇 가지 배경 지식을 제공합니다.
10.E.1. 중첩 된 JAR
Java는 중첩 된 jar 파일 (즉, jar 내에 포함 된 jar 파일)을로드하는 표준 방법을 제공하지 않습니다. 압축을 풀지 않고 명령 줄에서 실행할 수있는 독립형 응용 프로그램을 배포해야하는 경우 문제가 될 수 있습니다.
이 문제를 해결하기 위해 많은 개발자들이 "음영이있는"병을 사용합니다. 음영 처리 된 병은 모든 병의 모든 클래스를 하나의 "uber jar"로 패키지합니다. 음영 처리 된 항아리의 문제는 실제로 응용 프로그램에 어떤 라이브러리가 있는지 확인하기가 어렵다는 것입니다. 여러 jar에서 동일한 파일 이름을 사용하지만 내용이 다른 경우에도 문제가 될 수 있습니다. Spring Boot는 다른 접근 방식을 사용하므로 실제로 항아리를 직접 중첩시킬 수 있습니다.
실행 가능한 Jar 파일 구조
Spring Boot Loader 호환 jar 파일은 다음과 같은 방식으로 구성되어야합니다.
example.jar
|
+ -META-INF
| + -MANIFEST.MF
+ -org
| +-스프링 프레임 워크
| +-부팅
| + 로더
| +-<스프링 부트 로더 클래스>
+ -BOOT-INF
+ 수업
| + -mycompany
| +-프로젝트
| + -YourClasses.class
+ -lib
+ -dependency1.jar
+ -dependency2.jar
응용 프로그램 클래스는 중첩 된 BOOT-INF/classes
디렉토리 에 있어야합니다 . 종속성은 중첩 된 BOOT-INF/lib
디렉토리 에 있어야합니다 .
실행 가능한 전쟁 파일 구조
Spring Boot Loader 호환 war 파일은 다음과 같은 방식으로 구성되어야합니다.
example.war
|
+ -META-INF
| + -MANIFEST.MF
+ -org
| +-스프링 프레임 워크
| +-부팅
| + 로더
| +-<스프링 부트 로더 클래스>
+ -WEB-INF
+ 수업
| + -com
| + -mycompany
| +-프로젝트
| + -YourClasses.class
+ -lib
| + -dependency1.jar
| + -dependency2.jar
+ -lib 제공
+ -servlet-api.jar
+ -dependency3.jar
종속성은 중첩 된 WEB-INF/lib
디렉토리 에 있어야합니다 . 임베디드를 실행할 때 필요하지만 기존 웹 컨테이너에 배포 할 때 필요하지 않은 모든 종속성은에 배치해야합니다 WEB-INF/lib-provided
.
색인 파일
Spring Boot Loader 호환 jar 및 war 아카이브는 BOOT-INF/
디렉토리 아래에 추가 색인 파일을 포함 할 수 있습니다 . classpath.idx
파일은 항아리가 클래스 패스에 추가해야한다는 주문을 제공, 항아리와 전쟁을 모두 제공 할 수 있습니다. 이 layers.idx
파일은 jar에만 사용할 수 있으며, jar을 Docker / OCI 이미지 작성을 위해 논리 계층으로 분할 할 수 있습니다.
인덱스 파일은 YAML 호환 구문을 따르므로 타사 도구로 쉽게 구문 분석 할 수 있습니다. 그러나 이러한 파일은 내부적으로 YAML로 구문 분석 되지 않으며 사용하려면 아래 설명 된 형식으로 정확하게 작성해야합니다.
클래스 패스 인덱스
클래스 경로 색인 파일은에서 제공 될 수 있습니다 BOOT-INF/classpath.idx
. 클래스 경로에 추가해야하는 순서로 jar 이름 (디렉토리 제외) 목록을 제공합니다. 각 줄은 대시 공백 ( "-·"
)으로 시작해야 하며 이름은 큰 따옴표로 묶어야합니다.
example.jar
|
+ -META-INF
| + -...
+ -BOOT-INF
+ 수업
| + ...
+ -lib
+ -dependency1.jar
+ -dependency2.jar
- "dependency2.jar"
- "dependency1.jar"
레이어 인덱스
클래스 경로 색인 파일은에서 제공 될 수 있습니다 BOOT-INF/layers.idx
. 그것은 레이어의 목록과 그 안에 포함되어야하는 jar 부분을 제공합니다. 레이어는 Docker / OCI 이미지에 추가되는 순서대로 작성됩니다. 레이어 이름은 접두사 ( "-·"
)와 콜론 ( ":"
) 접두사가 붙은 인용 문자열로 작성 됩니다. 레이어 내용은 파일 또는 디렉토리 이름으로, 공백 공간 대시 공간 ( "··-·"
)으로 시작하는 인용 문자열로 작성됩니다 . 디렉토리 이름은로 끝나고 /
파일 이름은 끝나지 않습니다. 디렉토리 이름이 사용되면 해당 디렉토리 내의 모든 파일이 동일한 계층에 있음을 의미합니다.
레이어 인덱스의 일반적인 예는 다음과 같습니다.
- "종속성":
- "BOOT-INF / lib / dependency1.jar"
- "BOOT-INF / lib / dependency2.jar"
- "신청":
- "BOOT-INF / classes /"
- "META-INF /"
10.E.2. 스프링 부트의 "JarFile"클래스
중첩 된 jar 로딩을 지원하는 데 사용되는 핵심 클래스는 org.springframework.boot.loader.jar.JarFile
입니다. 표준 jar 파일 또는 중첩 된 하위 jar 데이터에서 jar 컨텐츠를로드 할 수 있습니다. 처음로드 할 때 각 위치 JarEntry
는 다음 예제와 같이 외부 jar의 실제 파일 오프셋에 매핑됩니다.
myapp.jar
+ ------------------- + ------------------------- +
| / BOOT-INF / classes | /BOOT-INF/lib/mylib.jar |
| + ----------------- + || + ----------- + ---------- + |
|| A.class ||| B. 클래스 | C.class ||
| + ----------------- + || + ----------- + ---------- + |
+ ------------------- + ------------------------- +
^ ^ ^
0063 3452 3980
위의 예를 보여줍니다 방법은 A.class
에서 찾을 수 /BOOT-INF/classes
있는 myapp.jar
위치에 0063
. B.class
중첩 된 항아리에서 사실에서 찾을 수있다 myapp.jar
위치 3452
및 C.class
위치에있다 3980
.
이 정보로 무장 한 외부 병의 적절한 부분을 찾아 특정 중첩 항목을로드 할 수 있습니다. 아카이브의 압축을 풀 필요는 없으며 모든 항목 데이터를 메모리로 읽을 필요는 없습니다.
표준 Java "JarFile"과의 호환성
Spring Boot Loader는 기존 코드 및 라이브러리와의 호환성을 유지하기 위해 노력합니다. 드롭 인 대체품으로 org.springframework.boot.loader.jar.JarFile
확장되어 java.util.jar.JarFile
작동해야합니다. 이 getURL()
메소드는와 URL
호환되는 연결을 열고 java.net.JarURLConnection
Java와 함께 사용할 수 있는를 반환합니다 URLClassLoader
.
10.E.3. 실행 가능한 Jar 시작
이 org.springframework.boot.loader.Launcher
클래스는 실행 가능한 jar의 기본 진입 점으로 사용되는 특수 부트 스트랩 클래스입니다. Main-Class
jar 파일 의 실제 값 이며 적절하게 설정 URLClassLoader
하고 궁극적으로 main()
메소드를 호출 하는 데 사용됩니다 .
세 가지 실행 서브 클래스가 있습니다 ( JarLauncher
, WarLauncher
, 및 PropertiesLauncher
). 이들의 목적은 .class
중첩 된 jar 파일 또는 war 파일에서 디렉토리의 자원 ( 파일 등 )을로드하는 것입니다 ( 클래스 경로에있는 파일과는 달리). JarLauncher
및 의 경우 WarLauncher
중첩 경로가 고정됩니다. JarLauncher
의 외모 BOOT-INF/lib/
, 그리고 WarLauncher
의 외모 WEB-INF/lib/
와 WEB-INF/lib-provided/
. 더 원하는 경우 해당 위치에 추가 항아리를 추가 할 수 있습니다. PropertiesLauncher
에 보이는 BOOT-INF/lib/
응용 프로그램에서 기본적으로 보관. LOADER_PATH
또는 loader.path
in 이라는 환경 변수 loader.properties
(쉼표로 구분 된 디렉토리, 아카이브 또는 아카이브 내의 디렉토리 목록)를 설정하여 추가 위치를 추가 할 수 있습니다 .
런처 매니페스트
Launcher
의 Main-Class
속성으로 적절한 것을 지정해야합니다 META-INF/MANIFEST.MF
. 시작하려는 실제 클래스 (즉, main
메소드 를 포함하는 클래스 )가 Start-Class
속성에 지정되어야 합니다.
다음 예제는 MANIFEST.MF
실행 가능한 jar 파일 의 일반적인 예를 보여줍니다 .
메인 클래스 : org.springframework.boot.loader.JarLauncher
시작 수업 : com.mycompany.project.MyApplication
메인 클래스 : org.springframework.boot.loader.WarLauncher
시작 수업 : com.mycompany.project.MyApplication
|
Class-Path 매니페스트 파일에 항목을 지정할 필요가 없습니다 . 클래스 경로는 중첩 된 항아리에서 추론됩니다. |
10.E.4. 실행기 기능
PropertiesLauncher
외부 속성 (시스템 속성, 환경 변수, 매니페스트 항목 또는 loader.properties
) 으로 활성화 할 수있는 몇 가지 특수 기능이 있습니다 . 다음 표는 이러한 속성을 설명합니다.
키 |
목적 |
loader.path
|
예로서, 클래스 경로 쉼표로 구분 lib,${HOME}/app/lib . 이전 항목은 정기적처럼, 우선 -classpath 상의 javac 명령 행.
|
loader.home
|
의 상대 경로를 확인하는 데 사용됩니다 loader.path . 예를 들어, 주어진 loader.path=lib 다음 ${loader.home}/lib (그 디렉토리에있는 모든 jar 파일과 함께) 클래스 경로의 위치입니다. 이 속성은 loader.properties 다음 예제와 같이 파일 을 찾는 데에도 사용 /opt/app 됩니다 ${user.dir} . 기본값은 입니다.
|
loader.args
|
기본 메소드의 기본 인수 (공백으로 구분)
|
loader.main
|
시작할 메인 클래스의 이름입니다 (예 :) com.app.Application .
|
loader.config.name
|
(예를 들어, 특성 파일의 이름입니다 launcher ). 기본값은 loader 입니다.
|
loader.config.location
|
프로퍼티 파일의 경로 (예를 들어 classpath:loader.properties ). 기본값은 loader.properties 입니다.
|
loader.system
|
모든 속성을 시스템 속성에 추가해야 함을 나타내는 부울 플래그. 기본값은 false 입니다.
|
환경 변수 또는 매니페스트 항목으로 지정된 경우 다음 이름을 사용해야합니다.
키 |
매니페스트 항목 |
환경 변수 |
loader.path
|
Loader-Path
|
LOADER_PATH
|
loader.home
|
Loader-Home
|
LOADER_HOME
|
loader.args
|
Loader-Args
|
LOADER_ARGS
|
loader.main
|
Start-Class
|
LOADER_MAIN
|
loader.config.location
|
Loader-Config-Location
|
LOADER_CONFIG_LOCATION
|
loader.system
|
Loader-System
|
LOADER_SYSTEM
|
|
빌드 플러그인 은 팻 jar이 빌드 될 때 Main-Class 속성을 자동으로 이동시킵니다 Start-Class . 이를 사용하는 경우 Main-Class 속성 을 사용하고 생략 하여 시작할 클래스 이름을 지정하십시오 Start-Class . |
다음 규칙에 적용 할 수 있습니다 PropertiesLauncher
.
loader.properties
에서을 검색 loader.home
한 다음 클래스 경로의 루트 에서을 검색 한 다음을 검색하십시오 classpath:/BOOT-INF/classes
. 해당 이름의 파일이 존재하는 첫 번째 위치가 사용됩니다.
loader.home
는 loader.config.location
지정되지 않은 경우 에만 추가 특성 파일 (디폴트를 대체 함)의 디렉토리 위치입니다 .
loader.path
디렉토리 (jar 및 zip 파일에 대해 재귀 적으로 스캔 됨), 아카이브 경로, jar 파일 (예 :)에 대해 스캔 된 아카이브 내의 디렉토리 dependencies.jar!/lib
또는 기본 JVM 동작에 대한 와일드 카드 패턴을 포함 할 수 있습니다. 아카이브 경로는 접두사 loader.home
가있는 파일 시스템의 상대 위치 또는 파일 시스템의 임의의 위치 일 수 jar:file:
있습니다.
loader.path
(비어있는 경우) 기본값은 BOOT-INF/lib
(로컬 디렉토리 또는 아카이브에서 실행중인 경우 중첩 된 디렉토리를 의미)입니다. 이로 인해 추가 구성이 제공되지 않을 때 PropertiesLauncher
와 동일하게 작동합니다 JarLauncher
.
loader.path
의 위치를 구성하는 데 사용할 수 없습니다 loader.properties
(후자를 검색하는 데 사용되는 클래스 경로 PropertiesLauncher
는 시작 시 JVM 클래스 경로 임).
- 자리 표시 자 교체는 시스템 및 환경 변수와 속성 파일 자체를 사용하기 전에 모든 값에서 수행합니다.
- 속성 (둘 이상의 장소를 찾는 것이 적합한 경우)의 검색 순서는 환경 변수, 시스템 속성,
loader.properties
분해 된 아카이브 매니페스트 및 아카이브 매니페스트입니다.
10.E.5. 실행 가능한 Jar 제한
Spring Boot Loader 패키지 애플리케이션으로 작업 할 때 다음 제한 사항을 고려해야합니다.
- Zip 항목 압축 :
ZipEntry
중첩 된 jar의는 ZipEntry.STORED
메소드 를 사용하여 저장해야합니다 . 이것은 중첩 된 jar 내의 개별 컨텐츠를 직접 찾을 수 있도록하기 위해 필요합니다. 외부 jar의 다른 항목과 마찬가지로 중첩 된 jar 파일 자체의 컨텐츠는 여전히 압축 할 수 있습니다.
- System classLoader :
Thread.getContextClassLoader()
클래스를로드 할 때 시작된 응용 프로그램을 사용해야합니다 (기본적으로 대부분의 라이브러리 및 프레임 워크에서 수행). 중첩 된 jar 클래스를로드하려고 ClassLoader.getSystemClassLoader()
하면 실패합니다. java.util.Logging
항상 시스템 클래스 로더를 사용합니다. 이러한 이유로 다른 로깅 구현을 고려해야합니다.
10.E.6. 대체 단일 용기 솔루션
위의 제한으로 인해 스프링 부트 로더를 사용할 수없는 경우 다음 대안을 고려하십시오.
Spring Boot Reference Documentation
Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić, Jay Bryant, Madhura Bhave, Eddú Meléndez, Scott Frederick
Legal
2.3.1.RELEASE
Copyright © 2012-2020
Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.
|
출처 :
https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/htmlsingle/#executable-jar