Bu codelab hakkında
1. Genel bakış
Spring Çerçevesi, dosya sistemi, sınıf yolu veya web gibi çeşitli kaynaklardan dosyaları kolayca okumak ve yazmak için bir ResourceLoader
soyutlaması sunar. Tek yapmanız gereken, bilinen protokol önekini kullanarak kaynağın URI'sını belirtmek. Ö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ı yazarsınız.
Cloud Shell ve Cloud SDK gcloud komut satırı aracını kullanarak bu işlemi gerçekleştirebilirsiniz.
Neler öğreneceksiniz?
- Cloud Storage Spring Boot başlatıcı'yı kullanma
- Spring ile Cloud Storage'daki dosyalara erişme
- Bahar dönemi
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üzenleyicilerini kullanma
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 gereksinimler
Bağımsız tempolu ortam kurulumu
Google Hesabınız (Gmail veya Google Apps) yoksa bir hesap oluşturmanız gerekir. Google Cloud Platform Console'da (console.cloud.google.com) oturum açın ve yeni bir proje oluşturun:
Proje kimliğini tüm Google Cloud projeleri genelinde benzersiz bir ad olarak hatırlayın (yukarıdaki ad zaten alınmıştı ve maalesef sizin için çalışmaz). Bu, daha sonra bu codelab'de PROJECT_ID
olarak adlandırılacaktır.
Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i gözden geçirmek için çalışmanın birkaç dolardan fazla maliyeti olmayacak. Ancak daha fazla kaynak kullanmaya karar verirseniz veya bunları çalışır durumda bırakırsanız (bu belgenin sonundaki "temizlik" bölümüne bakın) daha yüksek maliyetli olabilir.
Yeni Google Cloud Platform kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Cloud Shell
Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.
Google Cloud Shell'i etkinleştir
GCP Console'dan, sağ üstteki araç çubuğu üzerinde Cloud Shell simgesini tıklayın:
Ardından "Cloud Shell'i Başlat"ı tıklayın:
Ortamın temel hazırlığı ve bağlantı kurması yalnızca birkaç dakika sürer:
Bu sanal makine, ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu laboratuvardaki çalışmalarınızın neredeyse tamamı tarayıcı veya Google Chromebook ile yapılabilir.
Cloud Shell'e bağlandıktan sonra kimliğinizin zaten doğrulanmış olduğunu ve projenin PROJECT_ID'nize ayarlanmış olduğunu görmeniz gerekir.
Kimliğinizin doğrulanmasını sağlamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list
Komut çıkışı
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Ayarlanmamışsa şu komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
3. Cloud Storage'da dosya oluşturma
Cloud Shell başlatıldıktan sonra, dosya oluşturup 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şturup dosyayı gsutil
kullanarak buraya aktarın.
$ BUCKET=spring-bucket-$USER $ gsutil makebucket gs://$BUCKET $ gsutil copy my-file.txt gs://$BUCKET
Cloud Storage'daki depolama alanı tarayıcısına gidin ve paket ile dosyanın burada olduğunu doğrulayın.
4. Spring Boot uygulamasını başlatma
Spring Initiallir 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 dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -
İlkleştirici'nin, şablon uygulamasının pom.xml
öğelerindeki bağımlılarınıza spring-boot-starter-web
ve spring-cloud-gcp-starter-storage
öğelerini otomatik olarak ekleyeceğini unutmayın.
Şablon uygulama dizininde değişiklik yapın:
$ cd spring-gcs
Maven'i kullanarak uygulamayı oluşturun ve çalıştırın.
$ ./mvnw spring-boot:run
Uygulama, 8080 numaralı bağlantı noktasında dinlemeye başlar. Yeni bir Cloud Shell sekmesini açın ve uygulamaya erişmek için curl
komutunu çalıştırın.
$ curl localhost:8080
Uygulama henüz yararlı bir şey yapmadığı için 404 yanıtı almanız gerekir. Uygulamanın çalıştığı önceki Cloud Shell sekmesine dönün ve uygulamayı Control+C
(Macintosh'ta Command+C
) ile sonlandırın.
5. Dosyayı Cloud Storage'da okuma
Spring Boot uygulamanızı daha önce Cloud Storage'da depoladığınız my-file.txt
dosyasına erişecek şekilde değiştirin. Amacınız, dosyanın içeriğini HTTP üzerinden döndürmektir.
Aşağıdaki talimatlarda, dosyaları düzenlemek için Vim'i kullanacaksınız ancak Cloud Shell'de Emacs, GNU Nano veya 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 ve kaynak URI'yi daha önce oluşturduğunuz paketle 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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GcsController {
@Value("gs://REPLACE_WITH_YOUR_BUCKET/my-file.txt")
private Resource gcsFile;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String readGcsFile() throws IOException {
return StreamUtils.copyToString(
gcsFile.getInputStream(),
Charset.defaultCharset()) + "\n";
}
}
Uygulamayı Maven ile oluşturup çalıştırın:
$ ./mvnw spring-boot:run
Uygulama, 8080 numaralı bağlantı noktasında dinlemeye başlar. Yeni bir Cloud Shell sekmesini açın ve uygulamaya erişmek için curl
komutunu çalıştırın.
$ curl localhost:8080
Artık dosya içeriğinin uygulamadan döndürüldüğünü göreceksiniz. Uygulamanın çalıştığı önceki Cloud Shell sekmesine gidip uygulamayı Control+C
(Macintosh'ta Command+C
) ile sonlandırın.
6. Cloud Storage'daki dosyaya yazma
Dosyanın içeriğini Cloud Storage'da okuyor ve Spring REST denetleyicisi aracılığıyla gösteriyorsunuz. Şimdi yeni dosya içeriğini aynı HTTP uç noktasına yayınlayarak dosyanın içeriğini değiştirin.
GcsController
için, HTTP POST'una yanıt verecek ve Cloud Storage'da dosyanıza veri yazacak başka bir yöntem eklemeniz gerekir. Bu kez Resource
için ilkbaharı WritableResource
'a yayınlayın.
İhtiyaç duyduğunuz ek içe aktarma işlemleriyle GcsController
'ı 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;
Yeni uç nokta yöntemini kumandaya ekleyin.
src/main/java/com/example/demo/GcsController.java
@RestController
public class GcsController {
@RequestMapping(value = "/", method = RequestMethod.POST)
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 oluşturup çalıştırın:
$ ./mvnw spring-boot:run
Uygulama, 8080 numaralı bağlantı noktasında dinlemeye başlar. Yeni bir Cloud Shell sekmesi açın ve uygulamada 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 mesajı görürsünüz. Ancak bir GET
yaparak bunu doğrulayın.
$ curl localhost:8080
Uygulamadan döndürülen dosyanın güncellenmiş içeriğini görmeniz gerekir. Uygulamanın çalıştığı önceki Cloud Shell sekmesine dönün ve uygulamayı Control+C
(Macintosh'ta Command+C
) ile sonlandırın.
7. Tebrikler!
Cloud Storage'daki dosyalara kolayca erişmek için Spring Resource soyutlamasını kullanmayı öğrendiniz. Cloud Storage'daki bir dosyayı okuyup yazabilen Spring Boot web uygulaması yazdınız. Bu işlevi etkinleştiren Cloud Storage için Spring Boot başlatıcı'yı da öğrendiniz.
Daha Fazla Bilgi
- Cloud Storage
- Spring Cloud Google Cloud Projesi
- Google Cloud GitHub deposunda Spring
- 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.