¿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.
251
¿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
es, por lo que puedo ver, específico para [spring-cloud-config
] ( cloud.spring.io/spring-cloud-config/… )) y es la configuración utilizada para encontrar la configuración correcta. Entonces config probablemente esté cargado antes de application.properties/yamlRespuestas:
Acabo de preguntarles a los
Spring Cloud
chicos y pensé que debería compartir la información que tengo aquí.bootstrap.yml
se carga antesapplication.yml
.Normalmente se usa para lo siguiente:
spring.application.name
yspring.cloud.config.server.git.uri
dentrobootstrap.yml
encryption/decryption
informacionTécnicamente,
bootstrap.yml
es cargado por un padre SpringApplicationContext
. Ese padreApplicationContext
se carga antes que el que usaapplication.yml
.fuente
bootstrap.yml
?bootstrap.yml
obootstrap.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:
Tenga en cuenta que
bootstrap.yml
obootstrap.properties
puede contener una configuración adicional (por ejemplo, valores predeterminados), pero generalmente solo necesita poner la configuración de arranque aquí.Por lo general, contiene dos propiedades:
spring.cloud.config.uri
)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
oapplication.properties
Contiene la configuración estándar de la aplicación, generalmente la configuración predeterminada, ya que cualquier configuración recuperada durante el proceso de arranque anulará la configuración definida aquí.
fuente
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.
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:
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:
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
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
fuente
Solo mis 2 centavos aquí ...
Bootstrap.yml o Bootstrap.properties se utilizan para recuperar la configuración de Spring Cloud Server.
Por ejemplo, en el archivo My Bootstrap.properties tengo la siguiente configuración
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 de Calcuation-Service cuando lo inicia
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
fuente
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 aplicación Bootstrap con estas configuraciones remotas.En realidad, también puede almacenar propiedades normales de la misma manera que lo
application.yml
hace. Pero presta atención a esta cosa difícil:bootstrap.yml
, tendrán menos prioridad que casi cualquier otra fuente de propiedades, incluida application.yml. Como se describe aquí .Aclaremos, hay dos tipos de propiedades relacionadas con
bootstrap.yml
: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 aquí .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
obootstrap.yml
en el arranque de primavera son:bootstrap.yml
.application.yml
tendrá mayor prioridad.fuente
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í:
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.
fuente
Otro uso para bootstrap.yml es cargar la configuración desde el mapa de configuración de kubernetes y los recursos secretos . La aplicación debe importar la dependencia spring-cloud-starter-kubernetes .
Al igual que con Spring Cloud Config, esto tiene que tener lugar durante la frase de arranque.
De los documentos:
Por lo tanto, las propiedades almacenadas en el recurso de mapa de configuración con meta.name default-name se pueden referenciar de la misma manera que las propiedades en application.yml
Y el mismo proceso se aplica a los secretos:
fuente
Bootstrap.yml es el primer archivo cargado cuando inicia la aplicación Spring Boot y application.property se carga cuando se inicia la aplicación. Por lo tanto, debe mantener las credenciales de su servidor de configuración, etc., en bootstrap.yml, que se requiere durante la carga de la aplicación y luego en application.properties que guarda, puede ser la URL de la base de datos, etc.
fuente