Para no tener que crear variables de entorno en mi servidor lo realice mediante archivo .env.
Ver proyecto: api-clinica-medica
- Agregar dependencia para la biblioteca Dotenv-java que permite cargar variables de entorno desde un archivo .env
<dependency>
<groupId>io.github.cdimascio</groupId>
<artifactId>dotenv-java</artifactId>
<version>2.2.0</version>
</dependency>
- Crear un archivo .env en la raiz del proyecto
# Datos de configuración de base de datos
DB_HOST=host
DB_NAME=db_name
DB_USER=user
DB_PASSWORD=pass
# Token JWT
JWT_SECRET=my_token_secret
- Agregar el archivo .env en el archivo .gitignore para para indicar a Git qué el archivo se va ignorar en el proyecto.
### ENV ###
.env
- Ajustar archivo application.properties con las variables de entorno configuradas en .env
spring.application.name=api
#Conexión base de datos
spring.datasource.url=jdbc:mysql://${DB_HOST}/${DB_NAME}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Token JWT
api.security.secret=${JWT_SECRET}
- Configurar la clase ApiApplication.java de la siguiente manera.
package med.voll.api;
import io.github.cdimascio.dotenv.Dotenv;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApiApplication {
public static void main(String[] args) {
Dotenv dotenv = Dotenv.load();
// Establece las propiedades de Spring a partir de las variables de entorno
// Base de datos
System.setProperty("DB_HOST", dotenv.get("DB_HOST"));
System.setProperty("DB_NAME", dotenv.get("DB_NAME"));
System.setProperty("DB_USER", dotenv.get("DB_USER"));
System.setProperty("DB_PASSWORD", dotenv.get("DB_PASSWORD"));
System.setProperty("JWT_SECRET", dotenv.get("JWT_SECRET"));
SpringApplication.run(ApiApplication.class, args);
}
}
- Para utilizar la variable de entorno en cualquier parte del proyecto.
System.getProperty("JWT_SECRET");
¡Espero les sirva de ayuda!