Saltar al contenido

Spring boot cómo leer el archivo de propiedades fuera del frasco

Contamos con la solución a este enigma, o por lo menos eso esperamos. Si tienes preguntas puedes dejar un comentario, que para nosotros será un gusto ayudarte

Solución:

Estoy un poco confundido por el título de la pregunta y la descripción. Espero no confundirte aún más con mis comentarios.

En general, Spring Boot tiene MUCHA opinión sobre la estructura del proyecto, así como sobre el binario creado. La forma recomendada (opinión de Spring Boot) es construir un jar con todas las dependencias dentro (jar de grasa). Si necesita propiedades de configuración definidas fuera de su fat jar (o guerra si eso es lo que creó), Spring Boot ofrece muchas opciones (consulte la referencia 1). Me gusta que mis aplicaciones apunten a un archivo externo usando la bandera (spring.config.location) que se puede configurar con una propiedad del sistema:

java -jar -Dspring.config.location= myBootProject.jar

Tenga en cuenta que puede hacer algo similar usando una variable de entorno para definir dónde vive su archivo externo.

¡Espero que esto ayude!

Referencias: 1. https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

No estoy seguro de si está lidiando con la misma situación que yo, pero en mi caso tengo un jar y un archivo * .properties fuera de él. Lo que hice para obtener el archivo *.properties ubicado fuera del contenedor fue lo siguiente:

@Configuration
public class ApplicationContext 

  @Bean
  public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() 
    PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
    properties.setLocation(new FileSystemResource("application.properties"));
    properties.setIgnoreResourceNotFound(false);

    return properties;
  

Cuando configuro la ubicación del archivo application.properties, creé el objeto FileSystemResource, que me permite obtener los archivos de propiedades que se encuentran junto al contenedor. Si tu Los archivos .properties están en classpath, por ejemplo, puede usar otras clases (como ClassPathResource). Puede leer otras clases que Spring ofrece para obtener un objeto Resource en el paquete org.springframework.core.io. .

Espero que este comentario ayude.

Como se menciona en los documentos de Spring Boot,

SpringApplication cargará propiedades desde application.properties
archivos en las siguientes ubicaciones y agréguelos al entorno Spring:

  1. Un subdirectorio /config del directorio actual.
  2. El directorio actual
  3. Un paquete classpath/config
  4. La raíz del classpath

La lista está ordenada por precedencia (las propiedades definidas en ubicaciones más altas en la lista anulan las definidas en ubicaciones más bajas).

Una forma es simplemente cambiar el nombre de su directorio ‘conf’ a ‘config’ y funcionará sin problemas. Por lo tanto, no es necesario realizar una configuración adicional hasta que desee que su archivo de propiedades se encuentre en una ubicación diferente a las 4 mencionadas anteriormente.

En ese caso, puede definir la fuente de propiedad explícitamente.

@PropertySource("classpath:config.properties")

y para múltiples archivos de propiedades

@PropertySources(
    @PropertySource("classpath:config.properties"),
    @PropertySource("classpath:logging.properties"),
    @PropertySource(value="classpath:missing.properties", ignoreResourceNotFound=true)
)

Reseñas y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *