Подключите приложение 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 предоставляет автоматически настраиваемый источник данных , позволяющий легко воспользоваться преимуществами Cloud SQL с минимальными изменениями в коде. В этой кодовой лаборатории используется исходный код Spring Petclinic .

Предварительные условия

  • Знание языка программирования и инструментов Java.
  • Знание стандартных текстовых редакторов Linux, таких как 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 Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Активировать Cloud Shell

  1. В Cloud Console нажмите «Активировать Cloud Shell». 853e55310c205094.png .

55efc1aaa7a4d3ad.png

Если вы запускаете Cloud Shell впервые, вы увидите промежуточный экран с описанием того, что это такое. Если вам был представлен промежуточный экран, нажмите «Продолжить» .

9c92662c6a846a5c.png

Подготовка и подключение к Cloud Shell займет всего несколько минут.

9f0e51b578fecce5.png

Эта виртуальная машина загружена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Большую часть, если не всю, работу в этой лаборатории кода можно выполнить с помощью браузера.

После подключения к Cloud Shell вы увидите, что вы прошли аутентификацию и что для проекта установлен идентификатор вашего проекта.

  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. Убедитесь, что установлена ​​правильная версия Java, и запустите приложение Petclinic локально.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. Нажмите «Просмотр в Интернете». 1a94d5bd10bfc072.png в Cloud Shell, затем выберите «Просмотр на порту 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 в свойство application.properties ' 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. Запустите приложение в Cloud Shell.

  1. Вы можете запустить приложение Spring Boot как обычно с помощью плагина Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. После запуска приложения нажмите «Предварительный просмотр в Интернете». 1a94d5bd10bfc072.png на панели инструментов Cloud Shell, затем выберите «Просмотр на порту 8080» .

3aca52f76c6c22a3.png

Вы должны снова увидеть домашнюю страницу Spring Petclinic, как показано здесь, в вашем браузере:

34e0d4f1e1765560.png

  1. Добавьте запись о владельце домашнего животного.

Необязательно: убедитесь, что Cloud SQL сохранил данные.

Вы можете убедиться, что введенные вами данные сохранились в Cloud SQL, как показано здесь. Нажмите Enter, когда будет предложено ввести пароль.

$ 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!

Узнать больше