درباره این codelab
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
- یک مرورگر، مانند Google Chrome
- آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند Vim، Emacs و GNU Nano
چگونه از Codelab استفاده خواهید کرد؟
تجربه خود را در ساخت برنامه های وب HTML و CSS چگونه ارزیابی می کنید؟
تجربه خود را در استفاده از خدمات Google Cloud چگونه ارزیابی می کنید؟
2. راه اندازی و الزامات
تنظیم محیط خود به خود
اگر قبلاً یک حساب Google (Gmail یا Google Apps) ندارید، باید یک حساب ایجاد کنید . به کنسول Google Cloud Platform ( consol.cloud.google.com ) وارد شوید و یک پروژه جدید ایجاد کنید:
شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID
خواهد شد.
در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در کنسول Cloud فعال کنید.
گذراندن این کد نباید بیش از چند دلار هزینه داشته باشد، اما اگر تصمیم به استفاده از منابع بیشتری داشته باشید یا اگر آنها را در حال اجرا رها کنید، ممکن است بیشتر باشد (به بخش "پاکسازی" در انتهای این سند مراجعه کنید).
کاربران جدید Google Cloud Platform واجد شرایط استفاده آزمایشی رایگان 300 دلاری هستند.
پوسته ابری
شما از Cloud Shell ، یک محیط خط فرمان که در Google Cloud اجرا می شود، استفاده خواهید کرد.
Google Cloud Shell را فعال کنید
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
سپس روی "Start Cloud Shell" کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را بسیار افزایش می دهد. اگر نگوییم تمام کارهای شما در این آزمایشگاه را می توان به سادگی با یک مرورگر یا Google Chromebook انجام داد.
پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی PROJECT_ID شما تنظیم شده است.
برای تایید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list
خروجی فرمان
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
خروجی فرمان
[core] project = <PROJECT_ID>
اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:
gcloud config set project <PROJECT_ID>
خروجی فرمان
Updated property [core/project].
3. یک فایل در فضای ذخیره سازی ابری ایجاد کنید
پس از راه اندازی Cloud Shell، می توانید شروع به ایجاد فایل ها و انتقال آنها به Cloud Storage کنید.
یک فایل با نام my-file.txt
ایجاد کنید:
$ echo "Hello World from GCS" > my-file.txt
سپس یک سطل منحصر به فرد جدید در Cloud Storage ایجاد کنید و فایل را با استفاده از 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 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
برنامه را با استفاده از 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.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";
}
}
برنامه را با 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;
روش نقطه پایانی جدید را به کنترلر اضافه کنید.
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";
}
...
}
برنامه را با 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 Cloud پروژه Google Cloud
- Spring on Google Cloud GitHub مخزن
- جاوا در Google Cloud
مجوز
این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.