1. بررسی اجمالی
Spring Framework یک انتزاع ResourceLoader
برای خواندن و نوشتن آسان فایل ها از منابع مختلف مانند سیستم فایل، classpath یا وب فراهم می کند. شما فقط باید URI منبع را با استفاده از پیشوند پروتکل معروف مشخص کنید. به عنوان مثال، برای دسترسی به یک فایل در سیستم فایل محلی، یک file:/data/config.yaml
.
شما یک برنامه Spring Boot می نویسید که با استفاده از انتزاع منابع Spring و پیشوند پروتکل gs:
به فایل های ذخیره شده در Cloud Storage دسترسی خواهد داشت.
این کار را با استفاده از Cloud Shell و Cloud SDK gcloud ابزار خط فرمان انجام خواهید داد.
چیزی که یاد خواهید گرفت
- نحوه استفاده از Cloud Storage Spring Boot Starter
- نحوه دسترسی به فایلها در فضای ذخیرهسازی ابری با Spring
- نحوه استفاده از انتزاع
Resource
Spring وWritableResource
آنچه شما نیاز دارید
- یک پروژه Google Cloud
- یک مرورگر، مانند گوگل کروم
- آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند Vim، Emacs و GNU Nano
چگونه از Codelab استفاده خواهید کرد؟
تجربه خود را با ساختن برنامه های وب HTML و CSS چگونه ارزیابی می کنید؟
تجربه خود را در استفاده از خدمات Google Cloud چگونه ارزیابی می کنید؟
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. (اگر قبلاً یک حساب Gmail یا G Suite ندارید، باید یک حساب ایجاد کنید .)
شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID
نامیده خواهد شد.
- در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در Cloud Console فعال کنید .
اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعملهای موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه میکند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
پوسته ابری
شما از Cloud Shell ، یک محیط خط فرمان که در Google Cloud اجرا می شود، استفاده خواهید کرد.
Cloud Shell را فعال کنید
- از Cloud Console، روی Activate Cloud Shell کلیک کنید .
اگر قبلاً Cloud Shell را راهاندازی نکردهاید، با یک صفحه میانی (زیر تاشو) روبرو میشوید که آن را توصیف میکند. اگر اینطور است، روی Continue کلیک کنید (و دیگر آن را نخواهید دید). در اینجا به نظر می رسد که آن صفحه یک بار مصرف:
تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. بیشتر، اگر نه همه، کار شما در این کد لبه را می توان به سادگی با یک مرورگر یا Chromebook انجام داد.
پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی ID پروژه شما تنظیم شده است.
- برای تایید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list
خروجی فرمان
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
خروجی فرمان
[core] project = <PROJECT_ID>
اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:
gcloud config set project <PROJECT_ID>
خروجی فرمان
Updated property [core/project].
3. یک فایل در Cloud Storage ایجاد کنید
پس از راه اندازی Cloud Shell، می توانید شروع به ایجاد فایل ها و انتقال آنها به Cloud Storage کنید.
یک فایل با نام my-file.txt
ایجاد کنید:
$ echo "Hello World from GCS" > my-file.txt
سپس یک سطل منحصر به فرد جدید در فضای ذخیره سازی ابری ایجاد کنید و فایل را با استفاده از gsutil
به آنجا منتقل کنید.
$ BUCKET=spring-bucket-$USER $ gsutil makebucket gs://$BUCKET $ gsutil copy my-file.txt gs://$BUCKET
به مرورگر ذخیره سازی در فضای ذخیره سازی ابری بروید و بررسی کنید که سطل و فایل در آنجا هستند.
4. یک برنامه Spring Boot را راه اندازی کنید
نوشتن برنامه را با استفاده از خط فرمان برای ایجاد یک برنامه Spring Boot جدید با Spring Initializr شروع کنید:
$ curl https://start.spring.io/starter.tgz \ -d type=maven-project \ -d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -
توجه داشته باشید که Initializr به طور خودکار spring-boot-starter-web
و spring-cloud-gcp-starter-storage
به وابستگی های شما در pom.xml
برنامه الگو اضافه می کند.
تغییر به دایرکتوری برنامه الگو:
$ cd spring-gcs
مطمئن شوید که JAVA_HOME
روی نسخه JDK صحیح تنظیم شده است:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
برنامه را با استفاده از Maven بسازید و اجرا کنید.
$ ./mvnw spring-boot:run
برنامه شروع به گوش دادن در پورت 8080 می کند. یک برگه جدید Cloud Shell را باز کنید و برای دسترسی به برنامه curl
را اجرا کنید.
$ curl localhost:8080
شما باید یک پاسخ 404 دریافت کنید زیرا برنامه هنوز هیچ کار مفیدی انجام نمی دهد.
به تب قبلی Cloud Shell جایی که برنامه در حال اجراست برگردید و آن را با Control+C
( Command+C
در مکینتاش) بکشید.
5. فایل را در Cloud Storage بخوانید
برنامه Spring Boot خود را برای دسترسی به my-file.txt
، فایلی که قبلاً در Cloud Storage ذخیره کردهاید، تغییر دهید. هدف شما این است که به سادگی محتویات فایل را از طریق HTTP برگردانید.
در دستورالعملهای زیر، از Vim برای ویرایش فایلها استفاده میکنید، اما میتوانید از Emacs، GNU Nano یا ویرایشگر کد داخلی در Cloud Shell نیز استفاده کنید:
$ cd ~/spring-gcs
یک کنترلر REST GcsController
به برنامه اضافه کنید.
$ vi src/main/java/com/example/demo/GcsController.java
کد زیر را جایگذاری کنید و فراموش نکنید که URI منبع را با سطلی که قبلا ایجاد کردهاید، تعمیر کنید. می توانید با اجرای دستور 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.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());
}
}
برنامه را با Maven بسازید و اجرا کنید:
$ ./mvnw spring-boot:run
برنامه شروع به گوش دادن در پورت 8080 می کند. یک برگه جدید Cloud Shell را باز کنید و برای دسترسی به برنامه curl
را اجرا کنید.
$ curl localhost:8080
اکنون باید مشاهده کنید که محتویات فایل از برنامه بازگشته است. به تب قبلی Cloud Shell جایی که برنامه در حال اجرا است بروید و آن را با Control+C
( Command+C
در مکینتاش) بکشید.
6. در Cloud Storage روی فایل بنویسید
شما محتویات فایل را در Cloud Storage می خوانید و آن را از طریق یک کنترلر Spring REST در معرض دید قرار می دهید. حال، با ارسال محتوای فایل جدید به همان نقطه پایانی HTTP، محتویات فایل را تغییر دهید.
شما باید روش دیگری را به GcsController
اضافه کنید که به HTTP POST پاسخ دهد و داده ها را در فایل شما در Cloud Storage بنویسد. این بار Resource
Spring را روی WritableResource
قرار دهید.
GcsController
با واردات اضافی که نیاز دارید به روز کنید.
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;
روش نقطه پایانی جدید را به کنترلر اضافه کنید.
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";
}
...
}
برنامه را با Maven بسازید و اجرا کنید:
$ ./mvnw spring-boot:run
برنامه شروع به گوش دادن در پورت 8080 می کند. یک برگه جدید Cloud Shell را باز کنید و curl
را اجرا کنید تا پیامی به برنامه ارسال کنید.
$ curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080
باید تأییدیه ای ببینید که محتوای فایل به روز شده است. با این حال، با انجام یک GET
آن را تأیید کنید.
$ curl localhost:8080
شما باید محتویات به روز شده فایل را که از برنامه بازگردانده شده است ببینید. به تب قبلی Cloud Shell جایی که برنامه در حال اجراست برگردید و آن را با Control+C
( Command+C
در مکینتاش) بکشید.
7. تبریک می گویم!
شما یاد گرفتید که از انتزاع منابع Spring برای دسترسی آسان به فایل ها در Cloud Storage استفاده کنید. شما یک برنامه وب Spring Boot نوشتید که می تواند یک فایل را در Cloud Storage بخواند و بنویسد. همچنین درباره راهانداز Spring Boot برای فضای ذخیرهسازی ابری که این قابلیت را فعال میکند، یاد گرفتید.
بیشتر بدانید
- فضای ذخیره سازی ابری
- Spring Framework در Google Cloud
- Spring on Google Cloud GitHub مخزن
- جاوا در Google Cloud
مجوز
این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.