Dotenv
Una vez que vamos avanzando y creamos proyectos más complejos, surge la necesidad de gestionar variables de entorno de nuestro programa. Estas variables de entorno pueden contener desde parámetros de configuración, datos de conexión (server, base de datos, ficheros, repositorios) o de usuario, información del entorno de ejecución, parámetros etc…
Para gestionar y tener bien centralizado todos esos parámetros surge la librería dotenv.
Introdución a DotEnv
Dotenv es una herramienta que permite cargar variables de entorno desde un archivo de configuración en proyectos de desarrollo de software. Es comúnmente utilizado en entornos de desarrollo de aplicaciones web para cargar configuraciones sensibles, como credenciales de bases de datos o claves de API, sin necesidad de exponerlas directamente en el código fuente.
Dotenv se encarga de cargar estas variables de entorno cuando la aplicación se inicia en un entorno de desarrollo, haciendo que la configuración sea fácilmente ajustable y portátil entre diferentes sistemas y configuraciones. Esto promueve una práctica de desarrollo más segura y escalable al separar la configuración del código fuente y permitir una gestión más centralizada de las variables de entorno.
Instalación de DotEnv
A partir de una dependencia Maven en lo más cómodo:
<dependency>
<groupId>io.github.cdimascio</groupId>
<artifactId>dotenv-java</artifactId>
<version>3.0.0</version>
</dependency>
Aquí os dejo también el jar que podéis agregar a un proyecto: jar
Uso de DotEnv
Lo primero es crear un fichero dentro de tu proyecto, con el nombre y extensión: “.env”
Este fichero contendrá por cada línea la clave de la variable y su valor, separado por un “=”. Ejemplo:
MY_ENV=MY_VALUE
...
Cuando se necesite usar dichas variables se debe cargar el .env desde el código fuente. La función load() de la clase Dotenv se encargará de ello, y la función get(String) para obtener el valor a partir de la clave. Ejemplo:
Dotenv dotenv = Dotenv.load();
System.out.println(dotenv.get("Mysql"));
También podemos obtener variables de sistema, a partir de su nombre. Y tienen preferencia con respecto a las del fichero .env.
Uso más avanzado
Ejemplo más avanzado, donde hay directrices de donde buscar el fichero, o si no está que no de error etc…
Dotenv dotenv = Dotenv.configure()
.directory("./some/path")
.ignoreIfMalformed()
.ignoreIfMissing()
.load();
Enlace con las opciones: enlace Portal de Github: enlace
Ejercicio
Cambia algun proyecto de base de datos, usando dotenv para todos los parámetros de conexión utilizados.
Conclusión
La idea es tener a mano todos esos parámetro que hay que cambiar cuando se pasa de un proyecto de desarrollo a producción, y tener mucho control sobre ese fichero. Son datos que no deberían estar esparcidos por el código. Una recomendación es incluir en el fichero .gitignore el fichero .env, para que no suba a ningún repositorio publico.