Kết nối ứng dụng Spring Boot với Cloud SQL

1. Trước khi bắt đầu

Cloud SQL là dịch vụ cơ sở dữ liệu được quản lý toàn diện, giúp bạn dễ dàng thiết lập, duy trì, quản lý và quản trị cơ sở dữ liệu quan hệ trên Google Cloud. Bạn có thể sử dụng Cloud SQL với Cloud SQL cho MySQL hoặc Cloud SQL cho PostgreSQL.

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách thiết lập một thực thể Cloud SQL cho MySQL, sau đó cập nhật ứng dụng Spring Boot để dùng thực thể Cloud SQL làm bộ nhớ phụ trợ. Spring Boot Starter cho Google Cloud SQL cung cấp một DataSource được định cấu hình tự động, cho phép bạn dễ dàng khai thác Cloud SQL mà không cần thay đổi mã nhiều. Lớp học lập trình này sử dụng mã nguồn Spring Petclinic.

Điều kiện tiên quyết

  • Làm quen với các công cụ và ngôn ngữ lập trình Java
  • Có kiến thức về các trình chỉnh sửa văn bản tiêu chuẩn của Linux, chẳng hạn như Vim, Emacs và nano

Bạn sẽ thực hiện

  • Sử dụng Cloud SQL trong ứng dụng Spring Boot.

Bạn cần có

  • Một dự án trên Google Cloud
  • Một trình duyệt, chẳng hạn như Google Chrome hoặc Firefox

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật ứng dụng.
  • Mã dự án là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham khảo Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử cách riêng của mình để xem có thể sử dụng hay không. Bạn không thể thay đổi mã này sau bước này và mã vẫn giữ nguyên trong thời gian của dự án.
  • Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án), mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
  1. Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh phát sinh việc thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạn đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Kích hoạt Cloud Shell

  1. Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell 853e55310c205094.pngs.

55efc1aaa7a4d3ad.pngS

Nếu đây là lần đầu tiên khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian mô tả về Cloud Shell. Nếu bạn nhìn thấy màn hình trung gian, hãy nhấp vào Tiếp tục.

9c92662c6a846a5c.pngS

Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài phút.

9f0e51b578fecce5.pngs

Máy ảo này được tải tất cả các công cụ phát triển cần thiết. Dịch vụ này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Nhiều (nếu không nói là) tất cả công việc của bạn trong lớp học lập trình này đều có thể thực hiện bằng trình duyệt.

Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án được đặt thành mã dự án.

  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list

Kết quả lệnh

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project

Kết quả lệnh

[core]
project = <PROJECT_ID>

Nếu chưa, bạn có thể thiết lập chế độ này bằng lệnh sau:

gcloud config set project <PROJECT_ID>

Kết quả lệnh

Updated property [core/project].

3. Thiết lập phiên bản Cloud SQL cho MySQL

  1. Sau khi Cloud Shell chạy, bạn có thể sử dụng dòng lệnh để tạo một phiên bản Cloud SQL mới:
$ gcloud sql instances create my-instance

Sau khi thao tác này hoàn tất, thực thể của bạn sẽ sẵn sàng để sử dụng.

  1. Bây giờ, hãy tạo cơ sở dữ liệu mà bạn sẽ dùng cho ứng dụng Petclinic:
$ gcloud sql databases create petclinic --instance my-instance

Bạn cũng có thể truy cập và định cấu hình phiên bản này thông qua Bảng điều khiển Cloud.

  1. Lấy tên kết nối thực thể máy ảo ở định dạng project-id:zone-id:instance-id bằng cách chạy lệnh sau. Bạn sẽ sử dụng tính năng này sau khi định cấu hình ứng dụng Spring Boot.
$ gcloud sql instances describe my-instance | grep connectionName

4. Sao chép và kiểm thử ứng dụng Petclinic trên máy

  1. Bây giờ, bạn sẽ sao chép ứng dụng Petclinic trên thiết bị.
$ git clone https://github.com/spring-projects/spring-petclinic

$ cd spring-petclinic
  1. Hãy nhớ đặt đúng phiên bản Java rồi chạy ứng dụng Petclinic trên máy.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. Nhấp vào biểu tượng Xem trước trên web1a94d5bd10bfc072.pngS trong Cloud Shell , sau đó chọn Xem trước trên cổng 8080.

3aca52f76c6c22a3.pngS

Bạn sẽ thấy trang chủ của Petclinic như được hiển thị dưới đây trong trình duyệt của mình:

34e0d4f1e1765560.pngS

  1. Bạn có thể khám phá và thêm dữ liệu. Ứng dụng sử dụng cơ sở dữ liệu HyperSQL trong bộ nhớ. Bây giờ, bạn sẽ chuyển từ HyperSQL sang sử dụng Cloud SQL làm cơ sở dữ liệu.

5. Sử dụng Cloud SQL trong Petclinic

Cập nhật tệp pom.xml Maven

Cập nhật tệp pom.xml như minh hoạ ở đây. Điều kiện khởi động cung cấp một đối tượng DataSource được tự động định cấu hình để kết nối với cơ sở dữ liệu Cloud SQL. Bạn có thể sử dụng Vim, nano hoặc Emacs để chỉnh sửa tệp.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
    ...
    <!-- Add Spring Cloud GCP Dependency BOM -->
    <dependencyManagement>
        <dependencies>
          <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>spring-cloud-gcp-dependencies</artifactId>
          <version>4.1.4</version>
          <type>pom</type>
          <scope>import</scope>
          </dependency>
      </dependencies>
    </dependencyManagement>
    <dependencies>
      ...
      <!-- Add CloudSQL Starter for MySQL -->
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
      </dependency>
      ...
    </dependencies>
</project>

Cập nhật application-mysql.properties

  1. Thay thế nội dung của src/main/resources/application-mysql.properties bằng các thuộc tính sau. Bạn cần đặt tên cho kết nối thực thể máy ảo ở bước trước.

src/main/resources/application-mysql.properties

database=mysql

spring.cloud.gcp.sql.database-name=petclinic
spring.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME

# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.5+.
spring.sql.init.mode=always  

  1. Cuối cùng, hãy bật hồ sơ Cloud SQL cho MySQL trong ứng dụng Spring Boot bằng cách thêm mysql vào application.properties' Thuộc tính spring.profiles.active:

src/main/resources/application.properties

# Keep the content of the file the same
...

# In the last line, add mysql to the spring.profiles.active property
spring.profiles.active=mysql

6. Chạy ứng dụng trong Cloud Shell

  1. Bạn có thể khởi động ứng dụng Spring Boot như bình thường bằng trình bổ trợ Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Sau khi ứng dụng khởi động, hãy nhấp vào Web Preview (Xem trước trên web) 1a94d5bd10bfc072.pngStrong thanh công cụ Cloud Shell, sau đó chọn Xem trước trên cổng 8080.

3aca52f76c6c22a3.pngS

Bạn sẽ thấy lại trang chủ của Spring Petclinic như minh hoạ dưới đây trong trình duyệt của mình:

34e0d4f1e1765560.pngS

  1. Thêm mục nhập về chủ sở hữu thú cưng.

Không bắt buộc: Xác minh rằng Cloud SQL đã lưu giữ dữ liệu

Bạn có thể xác minh rằng dữ liệu mà bạn nhập đã được lưu trữ trên Cloud SQL như minh hoạ dưới đây. Nhấn Enter khi được nhắc nhập mật khẩu.

$ gcloud sql connect my-instance -u root
Whitelisting your IP for incoming connection for 5 minutes...done.
Enter password: <Press Enter, there is no password by default>
...
mysql> use petclinic;
mysql> select * from owners;

Không bắt buộc: Xoá phiên bản Cloud SQL

Sau khi dừng ứng dụng, bạn có thể xoá thực thể Cloud SQL bằng lệnh sau:

$ gcloud sql instances delete my-instance

7. Xin chúc mừng

Bạn đã tìm hiểu cách kết nối với Cloud SQL trong ứng dụng Spring Boot!

Tìm hiểu thêm