1. Hinweis
Cloud SQL ist ein vollständig verwalteter Datenbankdienst, mit dem Sie Ihre relationalen Datenbanken in Google Cloud ganz einfach 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, um die Cloud SQL-Instanz als Back-End-Speicher zu verwenden. Spring Boot Starter für Google Cloud SQL bietet eine automatisch konfigurierte DataSource, mit der Sie die Vorteile von Cloud SQL mit minimalen Änderungen am Code nutzen können. In diesem Codelab wird der Quellcode von Spring Petclinic verwendet.
Voraussetzungen
- Vertrautheit mit der Programmiersprache und -tools von Java
- Kenntnisse in standardmäßigen Linux-Texteditoren wie vim, emacs und nano
Aufgabe
- Verwenden Sie Cloud SQL in Ihrer Spring Boot-Anwendung.
Voraussetzungen
- Ein Google Cloud-Projekt
- Browser, z. B. Google Chrome oder Firefox
2. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte 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 Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf deine Projekt-ID verweisen, die üblicherweise als
PROJECT_ID
bezeichnet wird. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts erhalten. - Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab ist kostengünstig. Sie können die von Ihnen erstellten Ressourcen oder das Projekt löschen, um Ressourcen herunterzufahren, um zu vermeiden, dass über diese Anleitung hinaus Kosten anfallen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren .
Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Zwischenbildschirm mit einer Beschreibung der Funktion angezeigt. Wenn ein Zwischenbildschirm angezeigt wird, klicken Sie auf Weiter.
Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.
Diese virtuelle Maschine verfügt über alle erforderlichen Entwicklertools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt, wodurch die Netzwerkleistung und Authentifizierung erheblich verbessert werden. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können mit einem Browser erledigt werden.
Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID eingestellt ist.
- Führen Sie in 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 in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob 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
- Nach dem Start von Cloud Shell können Sie über die Befehlszeile eine neue Cloud SQL-Instanz erstellen:
$ gcloud sql instances create my-instance
Sobald dieser Vorgang abgeschlossen ist, kann die Instanz verwendet werden.
- Erstellen Sie nun eine Datenbank, die Sie für die PetClinic-App verwenden:
$ gcloud sql databases create petclinic --instance my-instance
Sie können die Instanz auch über die Cloud Console aufrufen und konfigurieren.
- Rufen Sie den Namen der Instanzverbindung im Format
project-id:zone-id:instance-id
ab, indem Sie den folgenden Befehl ausführen. Sie benötigen ihn später bei der Konfiguration Ihrer Spring Boot-Anwendung.
$ gcloud sql instances describe my-instance | grep connectionName
4. PetClinic App klonen und lokal testen
- Sie klonen die PetClinic-App jetzt lokal.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic
- Prüfen Sie, ob die richtige Java-Version eingestellt 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.
Die Startseite von PetClinic sollte in Ihrem Browser angezeigt werden, wie hier dargestellt:
- Experimentieren Sie und fügen Sie Daten hinzu. Die Anwendung verwendet eine speicherinterne HyperSQL-Datenbank. Sie wechseln jetzt von HyperSQL zur Verwendung von Cloud SQL als Datenbank.
5. Cloud SQL in der Tierklinik verwenden
Maven-pom.xml-Datei aktualisieren
Aktualisieren Sie die Datei pom.xml
wie hier gezeigt. Der Auslöser 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.properties
durch die folgenden Attribute. 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-Anwendung, indem Sie
mysql
zuapplication.properties
hinzufügen.spring.profiles.active
-Property:
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. Anwendung in Cloud Shell ausführen
- Sie können die Spring Boot-Anwendung mit dem Spring Boot-Plug-in normal starten:
$ ./mvnw -DskipTests spring-boot:run
- Klicken Sie nach dem Start der Anwendung in der Cloud Shell-Symbolleiste auf Webvorschau und wählen Sie dann Vorschau auf Port 8080 aus.
Die Spring Petclinic-Startseite sollte wieder wie hier in Ihrem Browser angezeigt werden:
- Fügen Sie einen Eintrag für den Haustierbesitzer hinzu.
Optional: Prüfen, ob die Daten in Cloud SQL gespeichert wurden
Sie können wie hier gezeigt überprüfen, ob die eingegebenen Daten in Cloud SQL gespeichert wurden. 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 Ihre Anwendung 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 in Ihrer Spring Boot-Anwendung eine Verbindung zu Cloud SQL herstellen.