Подключите приложение 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 .

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

  • Знание языка программирования Java и инструментов его программирования.
  • Знание стандартных текстовых редакторов Linux, таких как Vim, Emacs и nano.

Что вы будете делать

  • Используйте Cloud SQL в своем приложении Spring Boot.

Что вам понадобится

2. Настройка и требования

Настройка среды для самостоятельного обучения

  1. Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google. Вы всегда можете его изменить.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор вашего проекта (обычно обозначается как PROJECT_ID ). Если сгенерированный идентификатор вас не устраивает, вы можете сгенерировать другой случайный идентификатор. В качестве альтернативы вы можете попробовать свой собственный и посмотреть, доступен ли он. После этого шага его нельзя изменить, и он сохраняется на протяжении всего проекта.
  • К вашему сведению, существует третье значение — номер проекта , которое используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
  1. Далее вам потребуется включить оплату в консоли Cloud для использования ресурсов/API Cloud. Выполнение этого практического задания не потребует больших затрат, если вообще потребует. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, вы можете удалить созданные ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

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

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

55efc1aaa7a4d3ad.png

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

9c92662c6a846a5c.png

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

9f0e51b578fecce5.png

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

После подключения к 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

В вашем браузере должна отобразиться главная страница ветеринарной клиники, как показано здесь:

34e0d4f1e1765560.png

  1. Поэкспериментируйте и добавьте данные. Приложение использует базу данных HyperSQL, работающую в оперативной памяти. Теперь вы переключитесь с HyperSQL на Cloud SQL в качестве базы данных.

5. Использование Cloud SQL в ветеринарной клинике.

Обновите файл pom.xml Maven.

Обновите файл 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 for 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. После запуска приложения нажмите «Веб-предварительный просмотр» . 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!

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