1. Antes de comenzar
Cloud SQL es un servicio de base de datos completamente administrado que facilita la configuración, el mantenimiento, la administración y la gestión de tus bases de datos relacionales en Google Cloud. Puedes usar Cloud SQL con Cloud SQL para MySQL o Cloud SQL para PostgreSQL.
En este codelab, aprenderás a configurar una instancia de Cloud SQL para MySQL y, luego, a actualizar una app de Spring Boot para usar la instancia de Cloud SQL como su almacenamiento en backend. El Spring Boot Starter para Google Cloud SQL proporciona un DataSource configurado automáticamente, lo que te permite aprovechar fácilmente Cloud SQL con cambios mínimos en tu código. En este codelab, se usa el código fuente de Spring Petclinic.
Requisitos previos
- Tener conocimientos del lenguaje de programación y las herramientas de Java
- Conocimiento de editores de texto estándares de Linux, como Vim, Emacs y nano
Actividades
- Usar Cloud SQL en tu app de Spring Boot
Requisitos
- Un proyecto de Google Cloud
- Un navegador, como Google Chrome o Firefox
2. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.



- El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
- El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como
PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto. - Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.
Activar Cloud Shell
- En la consola de Cloud, haz clic en Activar Cloud Shell
.

Si es la primera vez que inicias Cloud Shell, aparecerá una pantalla intermedia en la que se describirá qué es. Si apareció una pantalla intermedia, haz clic en Continuar.

El aprovisionamiento y la conexión a Cloud Shell solo tomará unos minutos.

Esta máquina virtual está cargada con todas las herramientas de desarrollo necesarias. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Gran parte de tu trabajo en este codelab, si no todo, se puede hacer con un navegador.
Una vez que te conectes a Cloud Shell, deberías ver que te autenticaste y que el proyecto se configuró con tu ID del proyecto.
- En Cloud Shell, ejecuta el siguiente comando para confirmar que tienes la autenticación:
gcloud auth list
Resultado del comando
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- En Cloud Shell, ejecuta el siguiente comando para confirmar que el comando gcloud conoce tu proyecto:
gcloud config list project
Resultado del comando
[core] project = <PROJECT_ID>
De lo contrario, puedes configurarlo con el siguiente comando:
gcloud config set project <PROJECT_ID>
Resultado del comando
Updated property [core/project].
3. Configura una instancia de Cloud SQL para MySQL
- Después de que se inicie Cloud Shell, puedes usar la línea de comandos para crear una nueva instancia de Cloud SQL:
$ gcloud sql instances create my-instance
Una vez que se complete esta operación, tu instancia estará lista para usar.
- Ahora, crea una base de datos que usarás para la app de Petclinic:
$ gcloud sql databases create petclinic --instance my-instance
También puedes acceder a la instancia y configurarla a través de la consola de Cloud.
- Obtén el nombre de la conexión de la instancia en el formato
project-id:zone-id:instance-idmediante la ejecución del comando siguiente. Lo usarás más adelante para configurar tu app de Spring Boot.
$ gcloud sql instances describe my-instance | grep connectionName
4. Clona y prueba la app de Petclinic de forma local
- Ahora clonarás la app de Petclinic de forma local.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic
- Asegúrate de que esté configurada la versión correcta de Java y ejecuta la app de Petclinic de forma local.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ ./mvnw spring-boot:run
- Haz clic en Vista previa en la Web
en Cloud Shell y, luego, selecciona Vista previa en el puerto 8080.

Deberías ver la página principal de Petclinic, como se muestra aquí en tu navegador:

- Experimenta y agrega datos. La app usa una base de datos HyperSQL en la memoria. Ahora cambiarás de HyperSQL a Cloud SQL como tu base de datos.
5. Usa Cloud SQL en Petclinic
Actualiza el archivo pom.xml de Maven
Actualiza el archivo pom.xml como se muestra aquí. El iniciador proporciona un objeto DataSource configurado automáticamente para conectarse a tu base de datos de Cloud SQL. Puedes usar Vim, nano o Emacs para editar el archivo.
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>
Actualiza application-mysql.properties
- Reemplaza el contenido de
src/main/resources/application-mysql.propertiescon las siguientes propiedades. Deberás establecer el nombre de conexión de la instancia del paso anterior.
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
- Por último, habilita un perfil de Cloud SQL para MySQL en la app de Spring Boot agregando
mysqla la propiedadspring.profiles.activedeapplication.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. Ejecuta la app en Cloud Shell
- Puedes iniciar la app de Spring Boot de forma normal con el complemento de Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- Una vez que se haya iniciado la app, haz clic en Vista previa en la Web
en la barra de herramientas de Cloud Shell y, luego, selecciona Vista previa en el puerto 8080.

Deberías volver a ver la página principal de Spring Petclinic, como se muestra aquí en tu navegador:

- Agrega una entrada de propietario de mascota.
Opcional: Verifica que Cloud SQL haya conservado los datos
Puedes verificar que los datos que ingresaste se hayan conservado en Cloud SQL, como se muestra aquí. Presiona Intro cuando se te solicite una contraseña.
$ 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;
Opcional: Borra tu instancia de Cloud SQL
Una vez que detengas la app, puedes borrar la instancia de Cloud SQL con el siguiente comando:
$ gcloud sql instances delete my-instance
7. Felicitaciones
Aprendiste a conectarte a Cloud SQL en tu app de Spring Boot.