tutorial starter start mvc example application java spring spring-boot spring-cloud

java - starter - spring boot wikipedia



¿Cuál es la diferencia entre poner una propiedad en application.yml o bootstrap.yml en el arranque de primavera? (6)

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


bootstrap.yml o bootstrap.properties

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

De la documentación:

Una aplicación Spring Cloud funciona creando un contexto "bootstrap", que es un contexto principal para la aplicación principal. Fuera de la caja, es responsable de cargar las propiedades de configuración de las fuentes externas y también de descifrar las propiedades en los archivos de configuración externos locales.

Tenga en cuenta que bootstrap.yml o bootstrap.properties pueden contener configuraciones adicionales (por ejemplo, valores predeterminados), pero generalmente solo necesita poner la configuración de bootstrap aquí.

Por lo general, 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.yml o application.properties

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


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

bootstrap.yml se carga antes de application.yml .

Normalmente se usa para lo siguiente:

  • cuando use Spring Cloud Config Server, debe especificar spring.application.name y spring.cloud.config.server.git.uri dentro de bootstrap.yml
  • alguna información de encryption/decryption

Técnicamente, bootstrap.yml es cargado por un Spring ApplicationContext padre. Ese ApplicationContext padre se carga antes que el que usa application.yml .


Bootstrap.yml se usa para obtener la configuración del servidor. Puede ser para una aplicación en la nube de Spring o para otros. Por lo general, se ve así:

spring: application: name: "app-name" cloud: config: uri: ${config.server:http://some-server-where-config-resides}

Cuando iniciamos la aplicación, intenta conectarse al servidor dado y leer la configuración basada en el perfil de resorte mencionado en la configuración de ejecución / depuración.

Si no se puede acceder al servidor, es posible que la aplicación no pueda continuar. Sin embargo, si las configuraciones que coinciden con el perfil están presentes localmente, las configuraciones del servidor se anulan.

Buen enfoque:

Mantenga un perfil separado para local y ejecute la aplicación usando diferentes perfiles.


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

  • bootstrap.yml se usa para guardar parámetros que indican dónde está la configuración remota y se crea el contexto de la aplicación Bootstrap con estas configuraciones remotas.

En realidad, también puede almacenar propiedades normales de la misma manera que lo hace application.yml . Pero presta atención a esta cosa difícil:

  • Si coloca propiedades en bootstrap.yml , tendrán menos prioridad que casi cualquier otra fuente de propiedades, incluida application.yml. Como se describe here .

Aclaremos, hay dos tipos de propiedades relacionadas con bootstrap.yml :

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

Entonces, las diferencias entre poner una propiedad en application.yml o bootstrap.yml en el arranque de primavera son:

  • Las propiedades para cargar archivos de configuración en la fase de arranque solo se pueden colocar en bootstrap.yml .
  • Como para todos los demás tipos de propiedades, colóquelas en application.yml tendrá mayor prioridad.

Esta respuesta ha sido muy bien explicada en el libro " Preguntas de la entrevista de microservicios, para desarrolladores de Java (Spring Boot, Spring Cloud, Cloud Native Applications) 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

application.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 para 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 sus necesidades de 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

bootstrap.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 su configuración de microservicio se almacena en un servidor de configuración de Spring Cloud remoto.

Puntos importantes sobre bootstrap.yml

  1. Cuando se utiliza con el servidor Spring Cloud Config, debe especificar el nombre de la aplicación y la ubicación de configuración de git utilizando las propiedades a continuación.

spring.application.name: "application-name" 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), necesitamos especificar el nombre de la aplicación y la ubicación del servidor de configuración usando las propiedades a continuación

spring.application.name: spring.cloud.config.uri:

  1. Este archivo de propiedades puede contener otra configuración relevante para el entorno de Spring Cloud, por ejemplo, la ubicación del servidor eureka, propiedades relacionadas con el cifrado / descifrado.

Al iniciarse, Spring Cloud realiza una llamada HTTP (S) al Spring Cloud Config Server 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


Solo mis 2 centavos aquí ...

Bootstrap.yml o Bootstrap.properties se usa para obtener la configuración de Spring Cloud Server.

Por ejemplo, en el archivo My Bootstrap.properties tengo la siguiente configuración

spring.application.name=Calculation-service spring.cloud.config.uri=http://localhost:8888

Al iniciar la aplicación, intenta obtener la configuración del servicio conectándose a http: // localhost: 8888 y examina Calculation-service.properties presente en el servidor Spring Cloud Config

Puede validar lo mismo de los registros del Servicio de cálculo cuando lo inicia

INFO 10988 --- [ restartedMain] cccConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888