En este tutorial te mostrare como separar en un archivo externo del proyecto las propiedades, es muy sencillo Spring Boot nos ofrece una anotación para configurarlo en automático.

Si conoces Spring Boot seguramente has utilizado en muchas ocasiones el archivo application.properties para configurar la conexión a la base de datos, la configuración de Spring Security y/o alguna propiedad específica de tu proyecto. Como sabrás cuando empaquetas el proyecto en un War o un Jar el archivo de propiedades se queda empaquetado dentro, esto podría ocasionar algún problema de seguridad y una forma de solucionarlo es separando el archivo del proyecto.

En este tutorial te mostrare como serar en un archivo externo del proyecto las propiedades, es un sencillo Spring Boot nos ofrece una anotación para configurarlo en automático.

El primer paso es definir una ruta de nuestro equipo donde almacenaremos el archivo de properties, en mi caso tengo una carpeta llamada propertiesProjects donde guardar diferentes archivos de propiedades, el archivo de propiedades que utilizares es app.properties

javy@javyHuerta:~/propertiesProjects$ tree
. 
└── properties   
     └── app.properties 

1 directory, 1 file

El siguiente paso es indicarle a Spring Boot la ubicación del archivo con la anotación @PropertySource() sobre la clase main del proyecto.

package com.javyhuerta.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;

@PropertySource("file:${JAVY_HUERTA}/properties/app.properties")
@SpringBootApplication
public class AppApplication {

	public static void main(String[] args) {
		SpringApplication.run(AppApplication.class, args);
	}

}

Seguramente te estás preguntando qué significa ${JAVY_HUERTA} y la respuesta es sencilla, es una variable de ambiente de esta forma la ruta del archivo de propiedades no queda en código duro y es más sencillo cambiar la ruta del archivo si se requiere.

Si publicas el proyecto en un servidor recuerda crear la variable de ambiente para que no marque error y si estás en desarrollo no olvides agregar la variable de ambiente a tu servidor local.

Variable de ambiente en Spring Tool Suite

Para agregar la variable de ambiente en tu entorno local si utilizas Spring Tool Suite lo puedes agregar en la ventana Boot Dashboard, clic derecho sobre tu proyecto en la opción open config y en la pestaña de Environment

Ubicación del archivo de properties

Recomendaciones generales

  • Utiliza una variable de ambiente de acuerdo a tu proyecto, por ejemplo podría ser el nombre del proyecto.

  • No olvides crear la variable de ambiente y agregar el archivo de propiedades cuando realices pruebas en pre-producción o publiques en producción.

  • Cuando trabajes en equipo define una ubicación para guardar el archivo de properties y mantenlo actualizado

Te comparto un proyecto de ejemplo que he realizado para este tutorial, es una api muy básica para la lectura de properties en un archivo externo

Proyecto en Github.