Spring Boot ile GraalVM Native, geliştiricilere daha hızlı başlatma süreleri, azaltılmış bellek tüketimi ve artırılmış güvenlik sunan uygulamalar oluşturma imkânı tanır. Native imaj desteği sayesinde, Spring Boot uygulamalarınız kaynak kısıtlı ortamlarda etkin bir şekilde çalışabilir ve modern bulut tabanlı mimariler için ideal bir seçenek haline gelir.
Yazan
Şuayb Şimşek
Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.
plugins {
id 'org.graalvm.buildtools.native' version '0.9.20'
}
🛠️ Adım 2: Bir REST Controller Yazın
Native imaj fonksiyonelliğini test etmek için basit bir REST endpoint oluşturun.
🛠️ Adım 3: Native İmaj Oluşturun
Bu bölümde Adım 3: Native İmaj Oluşturun konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.
Maven:
Native imaj oluşturmak için aşağıdaki komutu çalıştırın:
BASH
mvn -Pnative package
Gradle:
Aşağıdaki komutu çalıştırın:
BASH
gradle nativeCompile
🛠️ Adım 4: Docker İmajı Oluşturun
Spring Boot, native yürütülebilir dosyalarla Docker imajları oluşturmayı destekler.
Maven:
BASH
mvn -Pnative spring-boot:build-image
Gradle:
BASH
gradle bootBuildImage
Docker imajı local olarak hazır olacak ve aşağıdaki komutla çalıştırılabilir:
BASH
docker run --rm -p 8080:8080 myproject:0.0.1-SNAPSHOT
▶️ Uygulamayı Çalıştırma
Bu bölümde Uygulamayı Çalıştırma konusunu netleştirip uygulamada kullanacağınız temel noktaları özetliyoruz.
Yerel Olarak Çalıştırma
Native imajı doğrudan çalıştırabilirsiniz:
BASH
./target/myproject
Docker'da Çalıştırma
Eğer Docker imajı oluşturduysanız, aşağıdaki komutu kullanarak çalıştırabilirsiniz:
BASH
docker run --rm -p 8080:8080 myproject:0.0.1-SNAPSHOT
🧪 API'yı Test Etme
REST endpoint'i cURL veya Postman kullanarak test edin:
BASH
curl -X GET http://localhost:8080/greeting
Beklenen çıktı:
PLAINTEXTsnippet.txt
Hello from GraalVM Native!
🏁 Sonuç
Artık GraalVM Native Uygulama için üretim odaklı bir Spring Boot temeliniz var. Sonraki adımda ayarları kendi domainine uyarlayıp test ve gözlemlenebilirlik katmanını ekleyerek gerçek trafik altında doğrulayın.
JAVAMyApplication.java
package com.example.graalvmnative;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@GetMapping("/greeting")
public String greeting() {
return "Hello from GraalVM Native!";
}
}
KOTLINMyApplication.kt
package com.example.graalvmnative
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@SpringBootApplication
@RestController
class MyApplication {
@GetMapping("/greeting")
fun greeting(): String = "Hello from GraalVM Native!"
}
fun main(args: Array<String>) {
runApplication<MyApplication>(*args)
}