Tentang codelab ini
1. Ringkasan
Spring Framework menyediakan abstraksi ResourceLoader
untuk dengan mudah membaca dan menulis file dari berbagai sumber, seperti sistem file, classpath, atau web. Anda hanya perlu menentukan URI ke resource menggunakan awalan protokol yang terkenal. Misalnya, untuk mengakses file di sistem file lokal, Anda akan menentukan URI seperti file:/data/config.yaml
.
Anda akan menulis aplikasi Spring Boot yang akan mengakses file yang tersimpan di Cloud Storage menggunakan abstraksi Spring Resource dan awalan protokol gs:
.
Anda akan melakukannya dengan menggunakan Cloud Shell dan alat command line gcloud Cloud SDK.
Yang akan Anda pelajari
- Cara menggunakan starter Spring Boot Cloud Storage
- Cara mengakses file di Cloud Storage dengan Spring
- Cara menggunakan abstraksi
Resource
danWritableResource
Spring
Yang Anda butuhkan
- Project Google Cloud
- Browser, seperti Google Chrome
- Pemahaman tentang editor teks Linux standar, seperti Vim, Emacs, dan GNU Nano
Bagaimana Anda akan menggunakan codelab?
Bagaimana Anda menilai pengalaman membuat aplikasi web HTML dan CSS?
Bagaimana penilaian Anda terhadap pengalaman menggunakan layanan Google Cloud?
2. Penyiapan dan persyaratan
Penyiapan lingkungan mandiri
Jika belum memiliki Akun Google (Gmail atau Google Apps), Anda harus membuatnya. Login ke Google Cloud Platform console (console.cloud.google.com) dan buat project baru:
Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID
.
Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan melalui codelab ini tidak akan menghabiskan biaya lebih dari beberapa dolar, tetapi bisa lebih jika Anda memutuskan untuk menggunakan lebih banyak resource atau jika Anda membiarkannya berjalan (lihat bagian "pembersihan" di akhir dokumen ini).
Pengguna baru Google Cloud Platform memenuhi syarat untuk mendapatkan uji coba gratis senilai $300.
Cloud Shell
Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud.
Mengaktifkan Google Cloud Shell
Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:
Kemudian klik "Mulai Cloud Shell":
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB, dan berjalan di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser atau Google Chromebook.
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID.
Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list
Output perintah
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika tidak, Anda dapat menyetelnya dengan perintah ini:
gcloud config set project <PROJECT_ID>
Output perintah
Updated property [core/project].
3. Membuat file di Cloud Storage
Setelah Cloud Shell diluncurkan, Anda dapat mulai membuat file dan mentransfernya ke Cloud Storage.
Buat file bernama my-file.txt
:
$ echo "Hello World from GCS" > my-file.txt
Kemudian, buat bucket unik baru di Cloud Storage dan transfer file ke sana menggunakan gsutil
.
$ BUCKET=spring-bucket-$USER $ gsutil makebucket gs://$BUCKET $ gsutil copy my-file.txt gs://$BUCKET
Buka browser penyimpanan di Cloud Storage, lalu pastikan bucket dan file telah dimuat.
4. Melakukan inisialisasi aplikasi Spring Boot
Mulai menulis aplikasi dengan menggunakan command line untuk membuat aplikasi Spring Boot baru dengan Spring Initializr:
$ curl https://start.spring.io/starter.tgz \ -d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -
Perhatikan bahwa Initializr akan otomatis menambahkan spring-boot-starter-web
dan spring-cloud-gcp-starter-storage
ke dependensi Anda di pom.xml
aplikasi template.
Ubah ke direktori aplikasi template:
$ cd spring-gcs
Buat dan jalankan aplikasi menggunakan Maven.
$ ./mvnw spring-boot:run
Aplikasi akan mulai mendeteksi di port 8080. Buka tab Cloud Shell baru dan jalankan curl
untuk mengakses aplikasi.
$ curl localhost:8080
Anda akan mendapatkan respons 404 karena aplikasi belum melakukan apa pun yang berguna. Kembali ke tab Cloud Shell sebelumnya tempat aplikasi berjalan dan hentikan dengan Control+C
(Command+C
di Macintosh).
5. Membaca file di Cloud Storage
Ubah aplikasi Spring Boot untuk mengakses my-file.txt
, file yang sebelumnya Anda simpan di Cloud Storage. Tujuan Anda adalah mengembalikan konten file melalui HTTP.
Dalam petunjuk berikut, Anda akan menggunakan Vim untuk mengedit file, tetapi Anda juga dapat menggunakan Emacs, GNU Nano, atau editor kode bawaan di Cloud Shell:
$ cd ~/spring-gcs
Tambahkan pengontrol REST GcsController
ke aplikasi.
$ vi src/main/java/com/example/demo/GcsController.java
Tempel kode berikut, dan jangan lupa untuk memperbaiki URI resource dengan bucket yang Anda buat sebelumnya. Anda dapat memeriksa bucket dengan menjalankan perintah echo $BUCKET
.
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";
}
}
Buat dan jalankan aplikasi dengan Maven:
$ ./mvnw spring-boot:run
Aplikasi mulai memproses di port 8080. Buka tab Cloud Shell baru dan jalankan curl
untuk mengakses aplikasi.
$ curl localhost:8080
Sekarang Anda akan melihat bahwa konten file yang ditampilkan dari aplikasi. Buka tab Cloud Shell sebelumnya tempat aplikasi berjalan dan hentikan dengan Control+C
(Command+C
di Macintosh).
6. Menulis file di Cloud Storage
Anda telah membaca konten file di Cloud Storage dan mengeksposnya melalui pengontrol Spring REST. Sekarang, ubah konten file dengan memposting konten file baru ke endpoint HTTP yang sama.
Anda perlu menambahkan metode lain ke GcsController
yang akan merespons HTTP POST dan menulis data ke file Anda di Cloud Storage. Kali ini, transmisikan Spring Resource
ke WritableResource
.
Perbarui GcsController
dengan impor tambahan yang Anda butuhkan.
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;
Tambahkan metode endpoint baru ke pengontrol.
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";
}
...
}
Buat dan jalankan aplikasi dengan Maven:
$ ./mvnw spring-boot:run
Aplikasi mulai memproses di port 8080. Buka tab Cloud Shell baru dan jalankan curl
untuk memposting pesan ke aplikasi.
$ curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080
Anda akan melihat konfirmasi bahwa konten file telah diperbarui. Namun, verifikasikan dengan melakukan GET
.
$ curl localhost:8080
Anda akan melihat konten file yang diperbarui yang ditampilkan dari aplikasi. Kembali ke tab Cloud Shell sebelumnya tempat aplikasi berjalan dan hentikan dengan Control+C
(Command+C
di Macintosh).
7. Selamat!
Anda telah mempelajari cara menggunakan abstraksi Spring Resource untuk mengakses file di Cloud Storage dengan mudah. Anda telah menulis aplikasi web Spring Boot yang dapat membaca dan menulis ke file di Cloud Storage. Anda juga telah mempelajari starter Spring Boot untuk Cloud Storage yang mengaktifkan fungsi tersebut.
Pelajari Lebih Lanjut
- Cloud Storage
- Project Google Cloud Spring Cloud
- Spring di repositori GitHub Google Cloud
- Java di Google Cloud
Lisensi
Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.