Connecter une application Spring Boot à Cloud SQL

Connecter une application Spring Boot à Cloud SQL

À propos de cet atelier de programmation

subjectDernière mise à jour : avr. 22, 2020
account_circleRédigé par une Googleuse ou un Googleur

1. Avant de commencer

Cloud SQL est un service de base de données entièrement géré qui facilite la configuration, la maintenance, la gestion et l'administration de vos bases de données relationnelles sur Google Cloud. Vous pouvez utiliser Cloud SQL avec Cloud SQL pour MySQL ou Cloud SQL pour PostgreSQL.

Dans cet atelier de programmation, vous allez apprendre à configurer une instance Cloud SQL pour MySQL, puis à mettre à jour une application Spring Boot pour l'utiliser comme espace de stockage de backend. Spring Boot Starter pour Google Cloud SQL propose une solution DataSource configurée automatiquement, qui vous permet de profiter facilement de Cloud SQL avec des modifications mineures de votre code. Cet atelier de programmation utilise le code source Spring Petclinic.

Conditions préalables

  • Bonne connaissance des outils et du langage de programmation Java
  • Une bonne connaissance des éditeurs de texte Linux standards tels que Vim, Emacs et nano

Objectifs de l'atelier

  • Utilisez Cloud SQL dans votre application Spring Boot.

Prérequis

2. Prérequis

Configuration de l'environnement au rythme de chacun

  1. Connectez-vous à Cloud Console, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou G Suite, vous devez en créer un.)

Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID tout au long de cet atelier de programmation.

  1. Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources Google Cloud.

Le coût de cet atelier de programmation ne devrait pas vous coûter plus que quelques dollars, mais il pourrait être plus élevé si vous décidez d'utiliser davantage de ressources ou de les laisser s'exécuter.

Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai offert de 300$.

Activer Cloud Shell

  1. Dans Cloud Console, cliquez sur Activer Cloud Shell .

Si vous n'avez encore jamais démarré Cloud Shell, un écran intermédiaire s'affiche en dessous de la ligne de séparation pour décrire de quoi il s'agit. Si tel est le cas, cliquez sur Continuer (cet écran ne s'affiche qu'une seule fois). Voici à quoi il ressemble :

Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances réseau et l'authentification. Vous pouvez réaliser une grande partie, voire la totalité, des activités de cet atelier dans un simple navigateur ou sur votre Chromebook.

Une fois connecté à Cloud Shell, vous êtes en principe authentifié et le projet est défini avec votre ID de projet.

  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list

Résultat de la commande

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

Résultat de la commande

[core]
project = <PROJECT_ID>

Si vous obtenez un résultat différent, exécutez cette commande :

gcloud config set project <PROJECT_ID>

Résultat de la commande

Updated property [core/project].

3. Configurer une instance Cloud SQL pour MySQL

  1. Après le lancement de Cloud Shell, vous pouvez utiliser la ligne de commande pour créer une instance Cloud SQL:
$ gcloud sql instances create my-instance

Une fois cette opération terminée, votre instance sera prête à être utilisée.

  1. Ensuite, créez une base de données que vous utiliserez pour l'application Petclinic:
$ gcloud sql databases create petclinic --instance my-instance

Vous pouvez également accéder à l'instance et la configurer via Cloud Console.

  1. Obtenez le nom de la connexion à l'instance au format project-id:zone-id:instance-id en exécutant la commande suivante. Vous l'utiliserez plus tard pour configurer votre application Spring Boot.
$ gcloud sql instances describe my-instance |grep connectionName

4. Cloner et tester l&#39;application Petclinic en local

  1. Vous allez maintenant cloner et tester l'application Petclinic en local.
$ git clone https://github.com/spring-projects/spring-petclinic
$ cd spring-petclinic
$ ./mvnw spring-boot:run
  1. Cliquez sur Web Preview (Aperçu sur le Web) dans Cloud Shell , puis sélectionnez Preview on port 8080 (Prévisualiser sur le port 8080).

La page d'accueil de Petclinic doit s'afficher dans votre navigateur, comme illustré ci-dessous:

  1. Jouez et ajoutez des données. L'application utilise une base de données HyperSQL en mémoire. Vous allez maintenant passer d'HyperSQL à Cloud SQL en tant que base de données.

5. Utiliser Cloud SQL dans Petclinic

Mettez à jour le fichier pom.xml de Maven

Mettez à jour le fichier pom.xml comme indiqué ici. Le déclencheur fournit un objet DataSource configuré automatiquement pour se connecter à votre base de données Cloud SQL. Vous pouvez utiliser Vim, nano ou Emacs pour modifier le fichier.

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>

Mettre à jour application-mysql.properties

  1. Remplacez le contenu du fichier src/main/resources/application-mysql.properties par les propriétés suivantes. Vous devrez définir le nom de connexion de l'instance récupéré à l'étape précédente.

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. Enfin, activez un profil Cloud SQL pour MySQL dans l'application Spring Boot en ajoutant mysql à la propriété 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. Exécuter l&#39;application dans Cloud Shell

  1. Vous pouvez démarrer l'application Spring Boot normalement avec le plug-in Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Une fois l'application démarrée, cliquez sur Aperçu sur le Web dans la barre d'outils Cloud Shell, puis sélectionnez Prévisualiser sur le port 8080.

La page d'accueil de Spring Petclinic doit s'afficher à nouveau dans votre navigateur:

  1. Ajoutez une entrée de propriétaire d'animal.

Facultatif: Vérifier que Cloud SQL a conservé les données

Vous pouvez vérifier que les données saisies ont été enregistrées dans Cloud SQL, comme illustré ici. Lorsque vous êtes invité à entrer un mot de passe, appuyez sur Entrée (retour sur 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;
  

Facultatif: Supprimer votre instance Cloud SQL

Une fois votre application arrêtée, vous pouvez supprimer l'instance Cloud SQL à l'aide de la commande suivante:

$ gcloud sql instances delete my-instance 

7. Félicitations

Vous avez appris à vous connecter à Cloud SQL dans votre application Spring Boot.

En savoir plus