Thông tin về lớp học lập trình này
1. Tổng quan
Khung chương trình Spring cung cấp bản tóm tắt ResourceLoader
để dễ dàng đọc và ghi tệp từ nhiều nguồn, chẳng hạn như hệ thống tệp, đường dẫn lớp học hoặc web. Bạn chỉ cần chỉ định URI cho tài nguyên bằng tiền tố giao thức nổi tiếng. Ví dụ: để truy cập vào một tệp trên hệ thống tệp trên máy, bạn phải chỉ định một URI như file:/data/config.yaml
.
Bạn sẽ viết một ứng dụng Spring Boot để truy cập các tệp lưu trữ trên Cloud Storage bằng cách sử dụng bản tóm tắt Tài nguyên mùa xuân và tiền tố giao thức gs:
.
Bạn làm việc đó bằng cách sử dụng Cloud Shell và công cụ dòng lệnh gcloud của SDK SDK.
Kiến thức bạn sẽ học được
- Cách sử dụng Cloud Storage khởi động mùa xuân
- Cách truy cập các tệp trong Cloud Storage bằng Spring
- Cách sử dụng bản tóm tắt
Resource
vàWritableResource
của Spring
Bạn cần có
- Một dự án Google Cloud
- Một trình duyệt, chẳng hạn như Google Chrome
- Quen thuộc với các trình chỉnh sửa văn bản Linux tiêu chuẩn, chẳng hạn như Vim, Emacs và GNU nano
Bạn sẽ sử dụng lớp học lập trình như thế nào?
Bạn xếp hạng trải nghiệm như thế nào khi xây dựng các ứng dụng web HTML và CSS?
Bạn đánh giá trải nghiệm sử dụng các dịch vụ của Google Cloud như thế nào?
2. Thiết lập và các yêu cầu
Thiết lập môi trường theo tiến độ riêng
Nếu chưa có Tài khoản Google (Gmail hoặc Google Apps), thì bạn phải tạo một tài khoản. Đăng nhập vào bảng điều khiển của Google Cloud Platform (console.cloud.google.com) và tạo một dự án mới:
Hãy ghi nhớ mã dự án, một tên duy nhất trên tất cả các dự án Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động cho bạn!). Lớp học này sẽ được gọi sau này trong lớp học lập trình này là PROJECT_ID
.
Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.
Nếu tham gia lớp học lập trình này, bạn sẽ không mất quá vài đô la, nhưng có thể sẽ hiệu quả hơn nếu bạn quyết định sử dụng nhiều tài nguyên hơn hoặc nếu bạn để các tài nguyên đó hoạt động (xem "cleanup" ở cuối tài liệu này).
Người dùng mới của Google Cloud Platform đủ điều kiện dùng thử 300 đô la dùng thử miễn phí.
Cloud Shell
Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud.
Kích hoạt Google Cloud Shell
Từ bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ trên cùng bên phải:
Sau đó nhấp vào "Start Cloud Shell":
Bạn chỉ cần dành vài phút để cấp phép và kết nối với môi trường:
Máy ảo này được tải bằng tất cả các công cụ phát triển mà bạn cần. cung cấp một thư mục gốc 5GB cố định và chạy trên Google Cloud, qua đó nâng cao đáng kể hiệu suất và khả năng xác thực mạng. Phần lớn công việc của bạn trong phòng thí nghiệm này có thể thực hiện chỉ bằng một trình duyệt hoặc Google Chromebook.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng bạn đã được xác thực và dự án này đã được đặt thành PROJECT_ID của bạn.
Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Đầu ra lệnh
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Đầu ra lệnh
[core] project = <PROJECT_ID>
Nếu chưa, bạn có thể đặt lệnh đó bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Đầu ra lệnh
Updated property [core/project].
3. Tạo một tệp trong Cloud Storage
Sau khi Cloud Shell chạy, bạn có thể bắt đầu tạo tệp và chuyển các tệp đó sang Cloud Storage.
Tạo một tệp có tên my-file.txt
:
$ echo "Hello World from GCS" > my-file.txt
Sau đó, tạo một bộ chứa duy nhất mới trong Cloud Storage và chuyển tệp vào đó bằng gsutil
.
$ BUCKET=spring-bucket-$USER $ gsutil makebucket gs://$BUCKET $ gsutil copy my-file.txt gs://$BUCKET
Chuyển đến trình duyệt lưu trữ trong Cloud Storage và xác minh rằng bộ chứa và tệp có ở đó.
4. Khởi chạy ứng dụng Spring Boot
Bắt đầu viết ứng dụng bằng cách sử dụng dòng lệnh để tạo một ứng dụng mới khởi động vào mùa xuân có Spring Initializr:
$ curl https://start.spring.io/starter.tgz \ -d dependencies=web,cloud-gcp-storage -d baseDir=spring-gcs | tar -xzvf -
Xin lưu ý rằng Initializr sẽ tự động thêm spring-boot-starter-web
và spring-cloud-gcp-starter-storage
vào các phần phụ thuộc trong pom.xml
của ứng dụng mẫu.
Thay đổi đối với thư mục của ứng dụng mẫu:
$ cd spring-gcs
Tạo và chạy ứng dụng bằng Maven.
$ ./mvnw spring-boot:run
Ứng dụng sẽ bắt đầu lắng nghe trên cổng 8080. Mở thẻ Cloud Shell mới và chạy curl
để truy cập vào ứng dụng.
$ curl localhost:8080
Bạn sẽ nhận được phản hồi 404 vì ứng dụng chưa làm gì hữu ích. Quay lại thẻ Cloud Shell trước đó nơi ứng dụng đang chạy và bị loại bỏ bằng Control+C
(Command+C
trên Macintosh).
5. Đọc tệp trong Cloud Storage
Sửa đổi ứng dụng Spring Boot của bạn để truy cập my-file.txt
, tệp mà trước đây bạn lưu trữ trong Cloud Storage. Mục tiêu của bạn là chỉ trả về nội dung của tệp qua HTTP.
Trong hướng dẫn sau, bạn sẽ dùng Vim để chỉnh sửa tệp, nhưng cũng có thể sử dụng Emacs, GNU nano hoặc trình chỉnh sửa mã tích hợp sẵn trong Cloud Shell:
$ cd ~/spring-gcs
Thêm bộ điều khiển REST GcsController
vào ứng dụng.
$ vi src/main/java/com/example/demo/GcsController.java
Dán mã sau và đừng quên sửa URI tài nguyên bằng bộ chứa mà bạn đã tạo trước đó. Bạn có thể kiểm tra bộ chứa bằng cách chạy lệnh 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";
}
}
Tạo và chạy ứng dụng bằng Maven:
$ ./mvnw spring-boot:run
Ứng dụng bắt đầu lắng nghe trên cổng 8080. Mở thẻ Cloud Shell mới và chạy curl
để truy cập vào ứng dụng.
$ curl localhost:8080
Giờ đây, bạn sẽ thấy rằng nội dung của tệp được trả về từ ứng dụng. Hãy chuyển đến thẻ Cloud Shell trước đó, nơi ứng dụng đang chạy và hủy bỏ bằng Control+C
(Command+C
trên Macintosh).
6. Ghi vào tệp trong Cloud Storage
Bạn đọc nội dung của tệp trong Cloud Storage và hiển thị tệp đó thông qua bộ điều khiển Spring REST. Bây giờ, hãy thay đổi nội dung của tệp bằng cách đăng nội dung tệp mới lên cùng một điểm cuối HTTP.
Bạn cần thêm một phương thức khác vào GcsController
để phản hồi POST HTTP và ghi dữ liệu vào tệp của bạn trong Cloud Storage. Lần này, hãy truyền Resource
vào mùa xuân đến WritableResource
.
Cập nhật GcsController
với các lần nhập bổ sung mà bạn cần.
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;
Thêm phương thức điểm cuối mới vào bộ điều khiển.
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";
}
...
}
Tạo và chạy ứng dụng bằng Maven:
$ ./mvnw spring-boot:run
Ứng dụng bắt đầu lắng nghe trên cổng 8080. Mở một thẻ Cloud Shell mới và chạy curl
để đăng thông báo lên ứng dụng.
$ curl -d 'new message' -H 'Content-Type: text/plain' localhost:8080
Bạn sẽ thấy một thông báo xác nhận rằng nội dung của tệp đã được cập nhật. Tuy nhiên, hãy xác minh điều đó bằng cách thực hiện GET
.
$ curl localhost:8080
Bạn sẽ thấy nội dung cập nhật của tệp được trả về từ ứng dụng. Quay lại thẻ Cloud Shell trước đó nơi ứng dụng đang chạy và bị loại bỏ bằng Control+C
(Command+C
trên Macintosh).
7. Xin chúc mừng!
Bạn đã học cách dùng bản tóm tắt Tài nguyên mùa xuân để dễ dàng truy cập vào các tệp trong Cloud Storage. Bạn đã viết một ứng dụng web mùa xuân để có thể đọc và ghi vào tệp trong Cloud Storage. Bạn cũng đã tìm hiểu về công cụ Khởi động mùa xuân cho bộ nhớ trên đám mây giúp bật chức năng đó.
Tìm hiểu thêm
- Bộ nhớ trên đám mây
- Dự án Google Cloud của Cloud Cloud
- Spring trên kho lưu trữ GitHub của Google Cloud
- Java trên Google Cloud
Giấy phép
Tài liệu này được cấp phép theo Giấy phép chung Creative Commons 2.0.