Подключите приложение Spring Boot к Cloud SQL

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.

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

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

  1. Войдите в Cloud Console и создайте новый проект или используйте существующий. (Если у вас ещё нет учётной записи Gmail или G Suite, вам необходимо её создать .)

Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не будет вам работать, извините!). Далее в этой практической работе он будет обозначаться как PROJECT_ID .

  1. Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.

Выполнение этой лабораторной работы не должно обойтись вам дороже нескольких долларов, но может обойтись дороже, если вы решите использовать больше ресурсов или оставите их запущенными.

Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .

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

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

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

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

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

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

Вывод команды

[core]
project = <PROJECT_ID>

Если это не так, вы можете установить его с помощью этой команды:

gcloud config set project <PROJECT_ID>

Вывод команды

Updated property [core/project].
  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
  1. Теперь вам нужно будет клонировать и протестировать приложение Petclinic локально.
$ git clone https://github.com/spring-projects/spring-petclinic
$ cd spring-petclinic
$ ./mvnw spring-boot:run
  1. Нажмите «Предварительный просмотр в Интернете». в Cloud Shell выберите Предварительный просмотр на порту 8080 .

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

  1. Поэкспериментируйте и добавьте данные. Приложение использует базу данных 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

  1. Заменить содержимое 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
  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
  1. Вы можете запустить приложение Spring Boot обычным способом с помощью плагина Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. После запуска приложения нажмите «Веб-просмотр» . на панели инструментов Cloud Shell выберите Предварительный просмотр на порту 8080 .

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

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

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

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

$ 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 

Вы узнали, как подключиться к Cloud SQL в своем приложении Spring Boot!

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