Spring Boot Rest 2/10 – Base de datos Mongo DB embebida

20

En el anterior artículo de esta serie de tutoriales, revisamos cómo crear nuestro proyecto desde Spring Initializr. En este artículo, explicaremos un poco más acerca de cómo funciona la base de datos embebida de Mongo DB en un proyecto de Spring Boot. 🍃

Flapdoodle Embed Mongo

Es un proyecto para ejecutar Mongo DB de forma embebida a tus aplicaciones de Java, en orden de realizar pruebas unitarias, sin necesidad de una instancia local o un contenedor de Docker. Se debe tomar en cuenta que para nada es un sustituto para una instancia productiva y que no es una replica exacta del motor de Mongo, por lo que aún pasando las pruebas realizadas con esta dependencia, tu aplicación podría fallar en ambientes más altos. De tal forma, que deberás contar con pruebas end to end, para asegurar el funcionamiento correcto. 🤓

Puedes conocer más sobre este proyecto en:

https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo

Build Gradle

Ahora, revisemos las líneas relacionadas a Mongo DB embebida en nuestro archivo build.gradle:

 implementation 'de.flapdoodle.embed:de.flapdoodle.embed.mongo'
 testImplementation 'de.flapdoodle.embed:de.flapdoodle.embed.mongo'

Como podrás observar he agrado una tenemos la misma dependencia dos veces con distintas implementaciones, he agregado la primera con implementation para poder ejecutar la base de datos embebida, junto con mi aplicación y asegurar que el demo de esta serie de tutorial pueda correr en mi computadora. Creo que esta técnica es una buena idea justamente para probar tus cambias de forma local, sencilla y rápida pero sin lugar a dudas es una mejor práctica tener imágenes de docker, orquestadas con docker compose para la misma tarea. Nota que esto no es absolutamente recomendable para ejecutar ambientes productivos.

Después tenemos la dependencia con testImplementation, la cual nos permitirá usar la base embebida en nuestras pruebas.

Conexión a Mongo DB desde Spring Boot

Para conectarnos a la base embebida desde nuestra aplicación de Spring Boot, únicamente tendremos que definir nuestros modelos y repositorios, ya que Spring Boot detectará automáticamente que estamos corriendo una instancia embebida y realizará la conexión por nosotros.

Del mismo modo, si vas a conectarte a una instancia real de Mongo, puedes definir los parámetros de conexión en tu archivo application.yaml, y Spring Boot de forma automática realizará la conexión (recuerda comentar la dependencia con implementation, en el archivo de Gradle).

spring:
  data:
    mongodb:
      port: 27017
      host: mongo

Cambia el host y el puerto de acuerdo a la instancia a la que requieras conectarte, agrega credenciales de ser necesario.

En el siguiente articulo, revisaremos cómo conectarnos mediante repositorios de Spring Boot a Mongo DB. 😉

Repositorio de Github

Puedes encontrar el código del proyecto en el siguiente repositorio de Github:

https://github.com/chuucks/coffee-service


La configuración del proyecto de Spring Boot con Gradle, conexión a Mongo DB y autenticación básica de HTTP, en esta plataforma tiene únicamente fines educativos e ilustrativos. Para usar en producción requiere de mayores consideraciones, configuraciones y especificaciones. No dudes en contactarnos para cualquier duda o comentario o incluso abrir un Issue de Github en el repositorio del proyecto. 👍🏾

Comments

comments