یک برنامه Spring Boot را به Cloud SQL متصل کنید

1. قبل از شروع

Cloud SQL یک سرویس پایگاه داده کاملاً مدیریت شده است که راه‌اندازی، نگهداری، مدیریت و مدیریت پایگاه‌های داده رابطه‌ای خود را در Google Cloud آسان می‌کند. می توانید از Cloud SQL با Cloud SQL برای MySQL یا Cloud SQL برای PostgreSQL استفاده کنید.

در این کد لبه، شما یاد خواهید گرفت که چگونه یک Cloud SQL برای نمونه MySQL راه اندازی کنید و سپس یک برنامه Spring Boot را به روز کنید تا از نمونه Cloud SQL به عنوان ذخیره سازی باطن آن استفاده کنید. Spring Boot Starter برای Google Cloud SQL یک DataSource پیکربندی شده را ارائه می دهد که به شما این امکان را می دهد که به راحتی از مزیت Cloud SQL با حداقل تغییرات در کد خود استفاده کنید. این آزمایشگاه کد از کد منبع Spring Petclinic استفاده می کند.

پیش نیازها

  • آشنایی با زبان و ابزارهای برنامه نویسی جاوا
  • آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند Vim، Emacs و nano

کاری که خواهی کرد

  • از Cloud SQL در برنامه Spring Boot خود استفاده کنید.

آنچه شما نیاز دارید

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را فعال کنید

  1. از Cloud Console، روی Activate Cloud Shell کلیک کنید 853e55310c205094.png .

55efc1aaa7a4d3ad.png

اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید.

9c92662c6a846a5c.png

تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.

9f0e51b578fecce5.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی ارائه می‌کند و در Google Cloud اجرا می‌شود، که عملکرد و احراز هویت شبکه را بسیار افزایش می‌دهد. بسیاری از کارهای شما، اگر نه همه، در این کد لبه با مرورگر قابل انجام است.

پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شده اید و پروژه به ID پروژه شما تنظیم شده است.

  1. برای تایید احراز هویت، دستور زیر را در 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`
  1. دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد:
gcloud config list project

خروجی فرمان

[core]
project = <PROJECT_ID>

اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:

gcloud config set project <PROJECT_ID>

خروجی فرمان

Updated property [core/project].

3. یک Cloud SQL برای نمونه MySQL تنظیم کنید

  1. پس از راه اندازی Cloud Shell، می توانید از خط فرمان برای ایجاد یک نمونه جدید Cloud SQL استفاده کنید:
$ gcloud sql instances create my-instance

پس از اتمام این عملیات، نمونه شما آماده استفاده خواهد بود.

  1. اکنون یک پایگاه داده ایجاد کنید که از آن برای برنامه Petclinic استفاده می کنید:
$ gcloud sql databases create petclinic --instance my-instance

همچنین می‌توانید از طریق Cloud Console به نمونه دسترسی داشته باشید و آن را پیکربندی کنید.

  1. با اجرای دستور زیر، نام اتصال نمونه را با فرمت project-id:zone-id:instance-id دریافت کنید. بعداً از آن در پیکربندی برنامه Spring Boot خود استفاده خواهید کرد.
$ gcloud sql instances describe my-instance | grep connectionName

4. برنامه Petclinic را کلون کنید و به صورت محلی آزمایش کنید

  1. اکنون برنامه Petclinic را به صورت محلی کلون خواهید کرد.
$ git clone https://github.com/spring-projects/spring-petclinic

$ cd spring-petclinic
  1. مطمئن شوید که نسخه صحیح جاوا تنظیم شده است و برنامه Petclinic را به صورت محلی اجرا کنید.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. روی Web Preview کلیک کنید 1a94d5bd10bfc072.png در Cloud Shell، سپس Preview در پورت 8080 را انتخاب کنید.

3aca52f76c6c22a3.png

شما باید صفحه اصلی Petclinic را همانطور که در اینجا در مرورگر خود نشان داده شده است ببینید:

34e0d4f1e1765560.png

  1. بازی کنید و داده ها را اضافه کنید. این برنامه از یک پایگاه داده HyperSQL در حافظه استفاده می کند. اکنون از HyperSQL به استفاده از Cloud SQL به عنوان پایگاه داده خود سوئیچ خواهید کرد.

5. از Cloud SQL در Petclinic استفاده کنید

فایل 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>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>

به روز رسانی application-mysql.properties

  1. محتوای src/main/resources/application-mysql.properties با ویژگی های زیر جایگزین کنید . شما باید نام اتصال نمونه را از مرحله قبل تنظیم کنید.

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. در نهایت، یک Cloud SQL را برای نمایه MySQL در برنامه Spring Boot با افزودن mysql به ویژگی spring.profiles.active application.properties فعال کنید:

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. برنامه را در Cloud Shell اجرا کنید

  1. می توانید برنامه Spring Boot را به طور معمول با افزونه Spring Boot راه اندازی کنید:
$ ./mvnw -DskipTests spring-boot:run
  1. پس از شروع برنامه، روی Web Preview کلیک کنید 1a94d5bd10bfc072.png در نوار ابزار Cloud Shell، سپس Preview در پورت 8080 را انتخاب کنید.

3aca52f76c6c22a3.png

همانطور که در اینجا در مرورگر خود نشان داده شده است، باید صفحه اصلی Spring Petclinic را دوباره ببینید:

34e0d4f1e1765560.png

  1. یک ورودی صاحب حیوان خانگی اضافه کنید.

اختیاری: بررسی کنید که Cloud SQL داده ها را حفظ کرده است

همانطور که در اینجا نشان داده شده است، می توانید تأیید کنید که داده هایی که وارد کرده اید در Cloud SQL باقی مانده است. وقتی رمز عبور از شما خواسته شد، اینتر را بزنید.

$ 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

7. تبریک می گویم

شما نحوه اتصال به Cloud SQL را در برنامه Spring Boot خود یاد گرفتید!

بیشتر بدانید