Cloud SQL 是一項全代管資料庫服務,能讓您輕鬆設定、維護、管理及操作 Google Cloud 上的關聯式資料庫。您可以搭配 MySQL 適用的 Cloud SQL 或 PostgreSQL 適用的 Cloud SQL 使用。
在本程式碼研究室中,您將瞭解如何設定 MySQL 適用的 Cloud SQL 執行個體,然後更新 Spring Boot 應用程式,將 Cloud SQL 執行個體做為後端儲存空間。適用於 Google Cloud SQL 的 Spring Boot Starter 提供自動設定的 DataSource,讓您輕鬆運用 Cloud SQL,且只需對程式碼進行極少的變更。本程式碼研究室會使用 Spring Petclinic 原始碼。
必要條件
- 熟悉 Java 程式設計語言和工具
- 瞭解標準 Linux 文字編輯器,例如 Vim、Emacs 和 nano
執行步驟
- 在 Spring Boot 應用程式中使用 Cloud SQL。
軟硬體需求
- Google Cloud 專案
- 瀏覽器,例如 Google Chrome 或 Firefox
自行設定環境
請記住專案 ID,這是所有 Google Cloud 專案中不重複的名稱 (上述名稱已遭占用,因此不適用於您,抱歉!)。本程式碼研究室稍後會將其稱為 PROJECT_ID
。
- 接著,您必須在 Cloud 控制台中啟用帳單,才能使用 Google Cloud 資源。
完成這項程式碼研究室的費用不應超過數美元,但如果您決定使用更多資源,或是將資源繼續執行,則可能會增加費用。
Google Cloud 新使用者享有價值 $300 美元的免費試用期。
啟用 Cloud Shell
- 在 Cloud Shell 中,按一下「啟用 Cloud Shell」圖示
。
如果您從未啟動過 Cloud Shell,系統會顯示中間畫面 (摺疊式螢幕下方),說明 Cloud Shell 的用途。如果發生這種情況,請按一下「繼續」,之後就不會再看到這個畫面。一次性畫面如下所示:
佈建並連線至 Cloud Shell 的作業只需幾分鐘即可完成。
這部虛擬機器搭載各種您需要的開發工具,提供永久的 5 GB 主目錄,而且在 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].
- 啟動 Cloud Shell 後,您可以使用指令列建立新的 Cloud SQL 執行個體:
$ gcloud sql instances create my-instance
這項作業完成後,執行個體即可使用。
- 現在請建立 Petclinic 應用程式要使用的資料庫:
$ gcloud sql databases create petclinic --instance my-instance
您也可以透過 Cloud 控制台存取及設定執行個體。
- 執行下列指令,取得格式為
project-id:zone-id:instance-id
的執行個體連線名稱。稍後設定 Spring Boot 應用程式時,您會用到這個值。
$ gcloud sql instances describe my-instance |grep connectionName
- 您現在可以複製並在本機測試 Petclinic 應用程式。
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- 在 Cloud Shell 中按一下「Web Preview」(網頁預覽)
,然後選取「Preview on port 8080」(透過以下通訊埠預覽:8080)。
瀏覽器中應該會顯示 Petclinic 首頁,如下所示:
- 歡迎邊玩邊嘗試,並新增資料。應用程式會使用記憶體內 HyperSQL 資料庫。您現在要從 HyperSQL 切換為使用 Cloud SQL 做為資料庫。
更新 Maven pom.xml 檔案
請更新 pom.xml
檔案,如下所示。這個入門套件會提供自動設定的 DataSource
物件,用於連線至 Cloud SQL 資料庫。你可以使用 Vim、nano 或 Emacs 編輯檔案。
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>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.0.0.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
...
<!-- Add CloudSQL Starter for MySQL -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
</dependency>
...
</dependencies>
<repositories>
<!-- Use Spring Milestone Repository -->
<repository>
<id>repository.spring.milestone</id>
<name>Spring Milestones Repository</name>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
</project>
更新 application-mysql.properties
- 將
src/main/resources/application-mysql.properties
的內容替換成下列屬性。您需要設定上一個步驟中的執行個體連線名稱。
src/main/resources/application-mysql.properties
database=mysql
# Delete the rest of the original content of the file and replace with the following:
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.
spring.datasource.initialization-mode=always
- 最後,將
mysql
新增至application.properties' spring.profiles.active
屬性,在 Spring Boot 應用程式中啟用 MySQL 適用的 Cloud SQL 設定檔:
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
- 您可以使用 Spring Boot 外掛程式正常啟動 Spring Boot 應用程式:
$ ./mvnw -DskipTests spring-boot:run
- 應用程式啟動後,請按一下 Cloud Shell 工具列中的「網頁預覽」
,然後選取「透過以下通訊埠預覽:8080」。
瀏覽器中應該會再次顯示 Spring Petclinic 首頁,如下所示:
- 新增寵物主人項目。
選用:確認 Cloud SQL 已保存資料
如這裡所示,您可以確認輸入的資料是否已保存到 Cloud SQL。系統提示輸入密碼時,按下 Enter 鍵 (Macintosh 上的 Return 鍵)。
$ 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;
選用:刪除 Cloud SQL 執行個體
停止應用程式後,您可以使用下列指令刪除 Cloud SQL 執行個體:
$ gcloud sql instances delete my-instance
您已學會在 Spring Boot 應用程式中連線至 Cloud SQL!