1. Hinweis
Cloud SQL ist ein vollständig verwalteter Datenbankdienst, mit dem Sie Ihre relationalen Datenbanken ganz einfach in Google Cloud einrichten, warten und verwalten können. Sie können Cloud SQL entweder mit Cloud SQL for MySQL oder Cloud SQL for PostgreSQL verwenden.
In diesem Codelab erfahren Sie, wie Sie eine Cloud SQL for MySQL-Instanz einrichten und dann eine Spring Boot-App aktualisieren, damit sie die Cloud SQL-Instanz als Backend-Speicher verwendet. Der Spring Boot Starter für Google Cloud SQL bietet eine automatisch konfigurierte DataSource, sodass Sie Cloud SQL ganz einfach mit minimalen Änderungen an Ihrem Code nutzen können. In diesem Codelab wird der Quellcode von Spring Petclinic verwendet.
Voraussetzungen
- Kenntnisse der Programmiersprache Java und der entsprechenden Tools
- Kenntnisse von standardmäßigen Linux-Texteditoren wie Vim, Emacs und Nano
Aufgaben
- Cloud SQL in Ihrer Spring Boot-App verwenden
Voraussetzungen
- Ein Google Cloud-Projekt
- Ein Browser, z. B. Google Chrome oder Firefox
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren
.

Wenn Sie die Cloud Shell zum ersten Mal starten, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter.

Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.

Auf dieser virtuellen Maschine sind alle erforderlichen Entwicklungstools installiert. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser erledigt werden.
Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie authentifiziert sind und für das Projekt Ihre Projekt-ID eingestellt ist.
- Führen Sie in der Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list
Befehlsausgabe
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:
gcloud config set project <PROJECT_ID>
Befehlsausgabe
Updated property [core/project].
3. Cloud SQL for MySQL-Instanz einrichten
- Nachdem Cloud Shell gestartet wurde, können Sie über die Befehlszeile eine neue Cloud SQL-Instanz erstellen:
$ gcloud sql instances create my-instance
Nach Abschluss dieses Vorgangs ist Ihre Instanz einsatzbereit.
- Erstellen Sie nun eine Datenbank, die Sie für die Petclinic-App verwenden:
$ gcloud sql databases create petclinic --instance my-instance
Sie können auch über die Cloud Console auf die Instanz zugreifen und sie konfigurieren.
- Rufen Sie den Namen der Instanzverbindung im Format
project-id:zone-id:instance-idmit dem folgenden Befehl ab. Sie benötigen sie später, um Ihre Spring Boot-App zu konfigurieren.
$ gcloud sql instances describe my-instance | grep connectionName
4. PetClinic-App lokal klonen und testen
- Als Nächstes klonen Sie die Petclinic-App lokal.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic
- Achten Sie darauf, dass die richtige Java-Version festgelegt ist, und führen Sie die Petclinic-App lokal aus.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ ./mvnw spring-boot:run
- Klicken Sie in Cloud Shell auf Webvorschau
und wählen Sie dann Vorschau auf Port 8080 aus.

In Ihrem Browser sollte die Petclinic-Startseite wie hier zu sehen angezeigt werden:

- Probieren Sie es aus und fügen Sie Daten hinzu. Die App verwendet eine speicherresidente HyperSQL-Datenbank. Sie wechseln jetzt von HyperSQL zu Cloud SQL als Datenbank.
5. Cloud SQL in Petclinic verwenden
Maven-Datei pom.xml aktualisieren
Aktualisieren Sie die Datei pom.xml wie hier gezeigt. Das Starter-Paket stellt ein automatisch konfiguriertes DataSource-Objekt bereit, um eine Verbindung zu Ihrer Cloud SQL-Datenbank herzustellen. Sie können die Datei mit Vim, Nano oder Emacs bearbeiten.
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 aktualisieren
- Ersetzen Sie den Inhalt von
src/main/resources/application-mysql.propertiesdurch die folgenden Eigenschaften. Sie müssen den Namen der Instanzverbindung aus dem vorherigen Schritt festlegen.
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
- Aktivieren Sie schließlich ein Cloud SQL for MySQL-Profil in der Spring Boot-App, indem Sie
mysqlder Eigenschaftapplication.propertiesspring.profiles.activehinzufügen:
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. App in Cloud Shell ausführen
- Sie können die Spring Boot-Anwendung wie gewohnt mit dem Spring Boot-Plug-in starten:
$ ./mvnw -DskipTests spring-boot:run
- Wenn die App gestartet wurde, klicken Sie in der Cloud Shell-Symbolleiste auf Webvorschau
und wählen Sie Vorschau auf Port 8080 aus.

Sie sollten die Startseite von Spring Petclinic wieder in Ihrem Browser sehen, wie hier dargestellt:

- Einen Eintrag für einen Tierhalter hinzufügen
Optional: Prüfen, ob die Daten in Cloud SQL gespeichert wurden
Sie können prüfen, ob die eingegebenen Daten in Cloud SQL gespeichert wurden, wie hier gezeigt. Drücken Sie die Eingabetaste, wenn Sie zur Eingabe eines Passworts aufgefordert werden.
$ 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;
Optional: Cloud SQL-Instanz löschen
Nachdem Sie die App beendet haben, können Sie die Cloud SQL-Instanz mit dem folgenden Befehl löschen:
$ gcloud sql instances delete my-instance
7. Glückwunsch
Sie haben gelernt, wie Sie eine Verbindung zu Cloud SQL in Ihrer Spring Boot-App herstellen.