Saltar al contenido

Configuración externa para la aplicación Spring-Boot

Paola, miembro de nuestro equipo, nos hizo el favor de crear este escrito porque domina a la perfección dicho tema.

Solución:

Probablemente esté utilizando una configuración externa en forma de application.properties en el directorio actual cuando ejecuta su aplicación como un contenedor. Sin embargo, el “directorio actual” no es muy útil cuando se implementa como una guerra en un tomcat externo. Incluso si descubre cuál es el directorio actual, lo más probable es que sea la misma ubicación para todas las aplicaciones que se ejecutan en ese tomcat, por lo que cuando ejecuta más de una aplicación, eso no funcionará muy bien.

Lo que hacemos aquí es declarar dos PropertySources en nuestra aplicación:

@PropertySources(@PropertySource(value="classpath:internal.properties"), @PropertySource(value="file:$application.properties"))

internal.properties contiene valores predeterminados “incorporados” para las propiedades. El segundo PropertySource es un archivo que contiene una configuración externa. Observe cómo el nombre del archivo es en sí mismo una propiedad.

Definimos esto externamente en el Context elemento de nuestra aplicación (en tomcat):


    

Esto le permite tener múltiples aplicaciones ejecutándose en Tomcat, cada aplicación usando su propio archivo de propiedades externo. Incluso puede tener múltiples instancias del mismo aplicación que se ejecuta con diferentes propiedades.

Spring Boot ofrece muchas formas de especificar la ubicación de sus propiedades, no es necesario modificar sus fuentes.

Puedes definir el spring.config.ubicación valor por ejemplo:

  • En tus tomcat/conf/Catalina/ descriptores de contexto:

    
        
    
    
  • Como parámetro JVM en tu tomcat setenv.sh expediente:

    -Dspring.config.location=/path/to/application.properties
    
  • Como un SPRING_CONFIG_LOCATION Variable ambiental.

Para externalizar la aplicación Spring Boot.properties cuando se implementa como un archivo war, puede configurar spring.config.location al principio cuando la aplicación Spring Boot está configurada:

public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) 
        return springApplicationBuilder
                .sources(Application.class)
                .properties(getProperties());
    

    public static void main(String[] args) 

        SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(Application.class)
                .sources(Application.class)
                .properties(getProperties())
                .run(args);
    

   static Properties getProperties() 
      Properties props = new Properties();
      props.put("spring.config.location", "classpath:myapp1/");
      return props;
   

Para obtener más detalles, consulte esta solución.

Valoraciones y reseñas

Acuérdate de que tienes la capacidad de agregar una reseña si te fue de ayuda.

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



Utiliza Nuestro Buscador

Deja una respuesta

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