Spring Native 로 SpringBoot 프로그램 을 GraalVM 으로 변환 합 니 다.
4460 단어 SpringNativeSpringBootGraalVM
Spring Native 는 GraalVM 과 협업 하여 교량 역할 을 하여 GraalVM 이 전통 적 인 SpringBoot 코드 를 이해 하도록 확보한다.Oracle 실험실 의 고급 연구 매니저 인 Vojin Jovanovic 는 스프링 과 의 협력 에 대해 말 했다.
Spring 팀 과 합작 하여 본 기기 의 JVM 생태 계 를 구축 하 는 것 은 매우 즐 거 운 일이 다.그들의 깊 은 기술 지식 과 지역사회 에 민감 한 촉각 은 항상 가장 좋 은 해결 방안 을 가 져 올 수 있다.최신 Spring 본 기계 버 전과 JVM 생태계 에서 의 대량 사용 은 본 기계 컴 파일 의 광범 위 한 사용 으로 도 로 를 평평 하 게 깔 았 다.
백그라운드 에서 Maven 과 Gradle 이 제공 하 는 사전(AOT)플러그 인 은 Spring 유도 프로그램 을 이 컴퓨터 코드 로 변환 하 는 데 사 용 됩 니 다.이 플러그 인 들 은 GraalVM 이 지원 하지 않 는 모든 Spring 요소(예 를 들 어 반사 와 프 록 시)에 GraalVM 이 컴퓨터 설정 을 생 성 합 니 다.생 성 된 설정 은 reflect-config.json 파일 에 저 장 됩 니 다.예 를 들 어@Service 주석 을 사용 하 는 모든 종 류 는 JSON 파일 에 설 정 됩 니 다.
Spring 이 컴퓨터 설정 파일 이 META-INF/native-image 폴 더 에 있다 고 가정 하면 발견 할 수 있 습 니 다.이 기 계 는 SpringNative 가 지원 하지 않 는 요 소 를 설정 하 는 데 사용 할 수 있 습 니 다.예 를 들 어 MySQL 드라이버 설정 입 니 다.
새 프로젝트 를 만 들 때 Spring Initializer 에서 Spring 이 컴퓨터 의존 항목 을 제공 합 니 다.
일부 의존 항목,예 를 들 어 springdatajpa 는 GraalVM 을 지원 하기 위해 추가 설정 이 필요 합 니 다.Spring 팀 은 플러그 인 을 통 해 추가 설정 을 제공 합 니 다.예 를 들 어 Intitializr 에 Spring 데이터 JPA 의존 항목 을 추가 한 후,두 개의 추가 Maven 플러그 인 Spring aot Maven plugin 과 hibenate enhance Maven plugin(그들의 설정 포함)이 pom.xml 파일 에 추가 되 었 습 니 다.
이 때 모든 의존 항목 이 Spring Native 의 지 지 를 받 는 것 은 아니다.initializer 에서 생 성 된 Spring 항목 에 지원 되 지 않 는 의존 항목 이 포함 되 어 있 으 면 HELP.md 파일 이 표 시 됩 니 다.
다른 Spring Boot 프로그램 과 마찬가지 로 Initializer 는 프로그램 을 실행 하기 위해 적당 한 입구 점 류 를 자동 으로 만 듭 니 다.
@SpringBootApplication
public class NativeApplication {
public static void main(String[] args) {
SpringApplication.run(NativeApplication.class, args);
}
}
다음은 응용 프로그램 을 테스트 하기 위해 REST controller 를 제공 합 니 다.
@Controller
public class NativeEndpoint {
@GetMapping("/native")
public String nativeCall() {
return "Native";
}
}
표준 SpringBoot 의존 항목 을 제외 하고 Initializer 는 SpringNative 지원 에 새로운 의존 항목 을 추가 했다.
<dependency>
<groupId>org.springframework.experimental</groupId>
<artifactId>spring-native</artifactId>
<version>${spring-native.version}</version>
</dependency>
spring boot maven 플러그 인 은 다음 생 원가 기 이미 지 를 추가 로 설정 합 니 다:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<builder>paketobuildpacks/builder:tiny</builder>
<env>
<BP_NATIVE_IMAGE>true</BP_NATIVE_IMAGE>
</env>
</image>
</configuration>
</plugin>
Maven 은 사전 컴 파일 을 통 해 이 컴퓨터 이미 지 를 만 드 는 데 사용 할 수 있 습 니 다.실행 가능 한 파일 은 필요 한 모든 클래스 와 JDK 에서 온 정적 링크 코드 를 포함 합 니 다.기본 VM 은 일반적인 자바 vm 이 아 닌 실행 시 시스템 으로 사 용 됩 니 다.
$ ./mvnw spring-boot:build-image
코드 를 컴 파일 하고 최적화 할 때 이미 지 를 구축 하 는 데 시간 이 필요 합 니 다.이 단 계 는 Docker 이미지 에서 실 행 됩 니 다.상당 한 메모리 가 필요 합 니 다.다음 오류 가 발생 하면 Docker 의 메모리 설정 을 추가 해 야 합 니 다.
Exception in thread "native-image pid watcher" java.lang.OutOfMemoryError:
GC overhead limit exceeded
위 Maven 명령 을 실행 하 는 출력 은 결과 Docker 이미 지 를 보 여 줍 니 다.GraalVM 이 컴퓨터 이미 지 를 포함 합 니 다.
Successfully built image 'docker.io/library/native:0.0.1-SNAPSHOT'
프로그램 을 실행 하 는 모든 내용 을 포함 하여 생 성 된 이미 지 는 약 82MB 입 니 다.
$ docker images
native 0.0.1-SNAPSHOT ... 81.9MB
Docker 용기 가 포트 8080 에서 시 작 됩 니 다.
$ docker run -p 8080:8080 native:0.0.1-SNAPSHOT
용 기 를 시작 하면 프로그램 은 거의 즉시 테스트 할 수 있 습 니 다.
$ curl localhost:8080/native --silent
Native
이상 은 Spring Native 로 SpringBoot 프로그램 을 GraalVM 으로 변환 하 는 상세 한 내용 입 니 다.SpringBoot 프로그램 을 GraalVM 으로 변환 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.