¿Cuál es la diferencia entre poner una propiedad en application.yml o bootstrap.yml en Spring Boot?

Resuelto Rys asked hace 9 años • 9 respuestas

¿Cuál es la diferencia entre poner una propiedad en application.yml o bootstrap.yml en Spring Boot? En el caso de logging.config, la aplicación funciona de manera diferente.

Rys avatar Oct 07 '15 23:10 Rys
Aceptado

Acabo de preguntarles a los Spring Cloudchicos y pensé que debería compartir la información que tengo aquí.

bootstrap.ymlse carga antes application.yml.

Normalmente se utiliza para lo siguiente:

  • cuando utilice Spring Cloud Config Server, debe especificar spring.application.namey spring.cloud.config.server.git.uridentrobootstrap.yml
  • alguna encryption/decryptioninformación

Técnicamente, bootstrap.ymllo carga un Spring padre ApplicationContext. Ese padre ApplicationContextse carga antes que el que usa application.yml.

Michael Isvy avatar Feb 22 '2016 03:02 Michael Isvy

bootstrap.ymlobootstrap.properties

Solo se usa/necesita si está usando Spring Cloud y la configuración de su aplicación está almacenada en un servidor de configuración remoto (por ejemplo, Spring Cloud Config Server).

De la documentación:

Una aplicación Spring Cloud funciona creando un contexto "arranque", que es un contexto principal para la aplicación principal. De fábrica, es responsable de cargar las propiedades de configuración desde las fuentes externas y también de descifrar las propiedades en los archivos de configuración externos locales.

Tenga en cuenta que bootstrap.ymlo bootstrap.properties puede contener configuraciones adicionales (por ejemplo, valores predeterminados), pero generalmente solo necesita colocar la configuración de arranque aquí.

Normalmente contiene dos propiedades:

  • ubicación del servidor de configuración ( spring.cloud.config.uri)
  • nombre de la aplicación ( spring.application.name)

Al iniciarse, Spring Cloud realiza una llamada HTTP al servidor de configuración con el nombre de la aplicación y recupera la configuración de esa aplicación.

application.ymloapplication.properties

Contiene la configuración de aplicación estándar: normalmente la configuración predeterminada, ya que cualquier configuración recuperada durante el proceso de arranque anulará la configuración definida aquí.

dustin.schultz avatar Apr 07 '2017 03:04 dustin.schultz

Esta respuesta se ha explicado muy bien en el libro " Preguntas de la entrevista sobre microservicios, para desarrolladores de Java (Spring Boot, Spring Cloud, aplicaciones nativas de la nube) de Munish Chandel , versión 1.30, 25.03.2018.

El siguiente contenido ha sido tomado de este libro y el crédito total por esta respuesta es para el autor del libro, es decir, Munish Chandel.

aplicación.yml

El archivo application.yml/application.properties es específico de las aplicaciones Spring Boot. A menos que cambie la ubicación de las propiedades externas de una aplicación, Spring Boot siempre cargará application.yml desde la siguiente ubicación:

/src/main/resources/application.yml

Puede almacenar todas las propiedades externas de su aplicación en este archivo. Las propiedades comunes que están disponibles en cualquier proyecto Spring Boot se pueden encontrar en: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Puede personalizar estas propiedades como según las necesidades de su aplicación. El archivo de muestra se muestra a continuación:

spring:
    application:
        name: foobar
    datasource:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost/test
server:
    port: 9000

arranque.yml

bootstrap.yml, por otro lado, es específico de spring-cloud-config y se carga antes que application.yml.

bootstrap.yml solo es necesario si está utilizando Spring Cloud y la configuración de su microservicio está almacenada en un Spring Cloud Config Server remoto.

Puntos importantes sobre bootstrap.yml

  1. Cuando se utiliza con el servidor Spring Cloud Config, deberá especificar el nombre de la aplicación y la ubicación del git de configuración utilizando las siguientes propiedades.
spring.application.name: "nombre-aplicación"
spring.cloud.config.server.git.uri: "git-uri-config"

  1. Cuando se usa con microservicios (que no sean el servidor de configuración de la nube), debemos especificar el nombre de la aplicación y la ubicación del servidor de configuración usando las siguientes propiedades
nombre.de.aplicación.de.primavera:
spring.cloud.config.uri:
  1. Este archivo de propiedades puede contener otra configuración relevante para el entorno Spring Cloud, por ejemplo, la ubicación del servidor eureka y propiedades relacionadas con el cifrado/descifrado.

Al iniciarse, Spring Cloud realiza una llamada HTTP(S) al servidor de configuración de Spring Cloud con el nombre de la aplicación y recupera la configuración de esa aplicación.

application.yml contiene la configuración predeterminada para el microservicio y cualquier configuración recuperada (del servidor de configuración de la nube) durante el proceso de arranque anulará la configuración definida en application.yml.

Vaibhav Sharma avatar Oct 04 '2018 09:10 Vaibhav Sharma

Bueno, estoy totalmente de acuerdo con las respuestas que ya existen sobre este punto:

  • bootstrap.ymlse utiliza para guardar parámetros que señalan dónde está la configuración remota y se crea el contexto de la aplicación Bootstrap con esta configuración remota.

En realidad, también es capaz de almacenar propiedades normales de la misma manera que lo application.ymlhace. Pero presta atención a esto complicado:

  • Si coloca propiedades en bootstrap.yml, tendrán menor prioridad que casi cualquier otra fuente de propiedades, incluido application.yml. Como se describe aquí .

Dejemos claro que existen dos tipos de propiedades relacionadas con bootstrap.yml:

  • Propiedades que se cargan durante la fase de arranque. Solemos bootstrap.ymlencontrar el titular de las propiedades (un sistema de archivos, un repositorio git u otra cosa), y las propiedades que obtenemos de esta manera tienen alta prioridad, por lo que no pueden ser anuladas por la configuración local. Como se describe aquí .
  • Propiedades que están en el bootstrap.yml. Como se explicó anteriormente, tendrán menor prioridad. Utilícelos para establecer valores predeterminados, tal vez sea una buena idea.

Entonces, las diferencias entre poner una propiedad en Spring Boot application.ymlo bootstrap.ymlen Spring Boot son:

  • Las propiedades para cargar archivos de configuración en la fase de arranque solo se pueden colocar en formato bootstrap.yml.
  • En cuanto a todos los demás tipos de propiedades, colocarlas application.ymltendrá mayor prioridad.
Lebecca avatar Jun 02 '2019 12:06 Lebecca