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
yspring.cloud.config.server.git.uri
dentro debootstrap.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
- 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"
- 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:
- 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