1. Genel Bakış
Spring Çerçevesi; dosya sistemi, sınıf yolu veya web gibi çeşitli kaynaklardaki dosyaları kolayca okumak ve yazmak için bir ResourceLoader
soyutlaması sağlar. Bunun için, bilinen protokol önekini kullanarak kaynağın URI'sini belirtmeniz yeterlidir. Örneğin, yerel dosya sistemindeki bir dosyaya erişmek için file:/data/config.yaml
gibi bir URI belirtirsiniz.
Spring Resource soyutlamasını ve gs:
protokol önekini kullanarak Cloud Storage'da depolanan dosyalara erişecek bir Spring Boot uygulaması yazacaksınız.
Bunun için Cloud Shell ve Google Cloud SDK gcloud komut satırı aracını kullanabilirsiniz.
Neler öğreneceksiniz?
- Cloud Storage Yay Başlatma başlatıcıyı kullanma
- Spring ile Cloud Storage'daki dosyalara erişme
- Spring'in
Resource
veWritableResource
soyutlamaları nasıl kullanılır?
Gerekenler
- Bir Google Cloud projesi
- Google Chrome gibi bir tarayıcı
- Vim, Emacs ve GNU Nano gibi standart Linux metin düzenleyicileri hakkında bilgi
Codelab'i nasıl kullanacaksınız?
HTML ve CSS web uygulamaları oluşturma deneyiminizi nasıl değerlendirirsiniz?
Google Cloud hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?
2. Kurulum ve şartlar
Kendi hızınızda ortam kurulumu
- Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)
Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID
olarak adlandırılacaktır.
- Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları 300 ABD doları ücretsiz deneme programından yararlanabilir.
Cloud Shell
Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.
Cloud Shell'i etkinleştirme
- Cloud Console'da, Cloud Shell'i etkinleştir simgesini tıklayın.
Cloud Shell'i daha önce hiç çalıştırmadıysanız ne olduğunu açıklayan bir ara ekran (ekranın alt kısmında) gösterilir. Bu durumda Devam'ı tıklayın (bunu bir daha görmezsiniz). Tek seferlik ekran şöyle görünür:
Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.
İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı yalnızca bir tarayıcı veya Chromebook'unuzla yapılabilir.
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını görürsünüz.
- Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list
Komut çıkışı
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Doğru değilse aşağıdaki komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
3. Cloud Storage'da dosya oluşturma
Cloud Shell kullanıma sunulduktan sonra dosya oluşturmaya ve bunları Cloud Storage'a aktarmaya başlayabilirsiniz.
my-file.txt
adlı bir dosya oluşturun:
$ echo "Hello World from GCS" > my-file.txt
Ardından Cloud Storage'da yeni bir benzersiz paket oluşturun ve gsutil
dosyasını kullanarak dosyayı oraya aktarın.
$ BUCKET=spring-bucket-$USER $ gsutil makebucket gs://$BUCKET $ gsutil copy my-file.txt gs://$BUCKET
Cloud Storage'da depolama tarayıcısına gidin ve paket ile dosyanın mevcut olduğunu doğrulayın.
4. Spring Boot uygulamasını başlatma
Spring Initializr ile yeni bir Spring Boot uygulaması oluşturmak için komut satırını kullanarak uygulamayı yazmaya başlayın:
$ curl https://start.spring.io/starter.tgz \ -d type=maven-project \ -d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -
Başlatıcı'nın, spring-boot-starter-web
ve spring-cloud-gcp-starter-storage
öğelerini şablon uygulamasının pom.xml
içindeki bağımlılıklarınıza otomatik olarak ekleyeceğini unutmayın.
Şablon uygulamasının dizinine geçin:
$ cd spring-gcs
JAVA_HOME
öğesinin doğru JDK sürümüne ayarlandığından emin olun:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
Uygulamayı Maven kullanarak derleyip çalıştırın.
$ ./mvnw spring-boot:run
Uygulama, 8080 numaralı bağlantı noktasından dinlemeye başlar. Yeni bir Cloud Shell sekmesi açın ve uygulamaya erişmek için curl
komutunu çalıştırın.
$ curl localhost:8080
Uygulama henüz faydalı bir özellik sunmadığından 404 yanıtı alırsınız.
Uygulamanın çalıştığı önceki Cloud Shell sekmesine dönün ve Control+C
(Macintosh'ta Command+C
) ile uygulamayı sonlandırın.
5. Dosyayı Cloud Storage'da okuma
Spring Boot uygulamanızda, daha önce Cloud Storage'da depoladığınız my-file.txt
dosyasına erişecek şekilde değişiklik yapın. Hedefiniz dosyanın içeriğini HTTP aracılığıyla döndürmektir.
Aşağıdaki talimatlarda dosyaları düzenlemek için Vim'i kullanacaksınız ancak aynı zamanda Emacs, GNU Nano veya Cloud Shell'deki yerleşik kod düzenleyiciyi de kullanabilirsiniz:
$ cd ~/spring-gcs
Uygulamaya bir REST denetleyicisi GcsController
ekleyin.
$ vi src/main/java/com/example/demo/GcsController.java
Aşağıdaki kodu yapıştırın. Daha önce oluşturduğunuz paketle kaynak URI'sini düzeltmeyi unutmayın. echo $BUCKET
komutunu çalıştırarak paketi kontrol edebilirsiniz.
src/main/java/com/example/demo/GcsController.java
package com.example.demo;
import java.io.IOException;
import java.nio.charset.Charset;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GcsController {
@Value("gs://REPLACE_WITH_YOUR_BUCKET/my-file.txt")
private Resource gcsFile;
@GetMapping("/")
public String readGcsFile() throws IOException {
return StreamUtils.copyToString(
gcsFile.getInputStream(),
Charset.defaultCharset());
}
}
Uygulamayı Maven ile derleyip çalıştırın:
$ ./mvnw spring-boot:run
Uygulama, 8080 numaralı bağlantı noktasından dinlemeye başlar. Yeni bir Cloud Shell sekmesi açın ve uygulamaya erişmek için curl
komutunu çalıştırın.
$ curl localhost:8080
Şimdi, uygulamadan döndürülen dosya içeriğini görmeniz gerekir. Uygulamanın çalıştığı önceki Cloud Shell sekmesine gidin ve Control+C
(Macintosh'ta Command+C
) ile uygulamayı sonlandırın.
6. Cloud Storage'da dosyaya yazma
Dosyanın içeriğini Cloud Storage'da okudunuz ve dosyayı Spring REST denetleyicisi aracılığıyla kullanıma sundunuz. Şimdi, yeni dosya içeriğini aynı HTTP uç noktasına göndererek dosyanın içeriğini değiştirin.
GcsController
uygulamasına, HTTP POST'a yanıt verecek ve verileri Cloud Storage'daki dosyanıza yazacak başka bir yöntem eklemeniz gerekiyor. Bu sefer ilkbahar Resource
öğesini WritableResource
olarak yayınlayın.
İhtiyacınız olan ek içe aktarma işlemleriyle GcsController
dosyasını güncelleyin.
src/main/java/com/example/demo/GcsController.java
import java.io.OutputStream;
import org.springframework.core.io.WritableResource;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.PostMapping;
Denetleyiciye yeni uç nokta yöntemini ekleyin.
src/main/java/com/example/demo/GcsController.java
@RestController
public class GcsController {
@PostMapping("/")
String writeGcs(@RequestBody String data) throws IOException {
try (OutputStream os = ((WritableResource) gcsFile).getOutputStream()) {
os.write(data.getBytes());
}
return "file was updated\n";
}
...
}
Uygulamayı Maven ile derleyip çalıştırın:
$ ./mvnw spring-boot:run
Uygulama, 8080 numaralı bağlantı noktasından dinlemeye başlar. Yeni bir Cloud Shell sekmesi açın ve uygulamaya bir mesaj yayınlamak için curl
komutunu çalıştırın.
$ curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080
Dosya içeriğinin güncellendiğini belirten bir onay görürsünüz. Ancak GET
yaparak bunu doğrulayın.
$ curl localhost:8080
Uygulamadan döndürülen dosyanın güncellenmiş içeriğini görürsünüz. Uygulamanın çalıştığı önceki Cloud Shell sekmesine dönün ve Control+C
(Macintosh'ta Command+C
) ile uygulamayı sonlandırın.
7. Tebrikler!
Cloud Storage'daki dosyalara kolayca erişmek için Spring Resource soyutlama yöntemini kullanmayı öğrendiniz. Cloud Storage'da bir dosyayı okuyabilen ve dosyaya yazabilen bir Spring Boot web uygulaması yazdınız. Ayrıca Cloud Storage için bu işlevi sağlayan Spring Boot başlatıcısı hakkında da bilgi edindiniz.
Daha Fazla Bilgi
- Cloud Storage
- Google Cloud'da Spring Çerçevesi
- Spring'de Google Cloud GitHub deposu
- Google Cloud'da Java
Lisans
Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.