با انتزاع منابع Spring به فایل‌های موجود در فضای ابری دسترسی پیدا کنید

با انتزاع منابع Spring به فایل‌های موجود در فضای ابری دسترسی پیدا کنید

درباره این codelab

subjectآخرین به‌روزرسانی: فوریه ۱۰, ۲۰۲۰
account_circleنویسنده: meltsufin

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 ) وارد شوید و یک پروژه جدید ایجاد کنید:

اسکرین شات از 10/02/2016 12:45:26.png

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های 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 برای فضای ذخیره‌سازی ابری که این قابلیت را فعال می‌کند، یاد گرفتید.

بیشتر بدانید

مجوز

این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.