Qual é a diferença entre colocar uma propriedade em application.yml ou bootstrap.yml na inicialização por mola? No caso logging.config, o aplicativo funciona diferente.
251
Qual é a diferença entre colocar uma propriedade em application.yml ou bootstrap.yml na inicialização por mola? No caso logging.config, o aplicativo funciona diferente.
bootstrap.yml
é o máximo que posso ver específico para [spring-cloud-config
] ( cloud.spring.io/spring-cloud-config/… )) e é a configuração usada para encontrar a configuração correta. Então configuração não é provavelmente carregado antes application.properties/yamlRespostas:
Acabei de perguntar aos
Spring Cloud
caras e pensei em compartilhar as informações que tenho aqui.bootstrap.yml
é carregado antesapplication.yml
.É normalmente usado para o seguinte:
spring.application.name
espring.cloud.config.server.git.uri
dentrobootstrap.yml
encryption/decryption
informaçãoTecnicamente,
bootstrap.yml
é carregado por um pai SpringApplicationContext
. Esse paiApplicationContext
é carregado antes daquele que usaapplication.yml
.fonte
bootstrap.yml
?bootstrap.yml
oubootstrap.properties
Ele é usado / necessário apenas se você estiver usando o Spring Cloud e a configuração do seu aplicativo estiver armazenada em um servidor de configuração remota (por exemplo, Spring Cloud Config Server).
A partir da documentação:
Observe que o
bootstrap.yml
oubootstrap.properties
pode conter configuração adicional (por exemplo, padrões), mas geralmente você só precisa colocar a configuração de autoinicialização aqui.Normalmente, ele contém duas propriedades:
spring.cloud.config.uri
)spring.application.name
)Na inicialização, o Spring Cloud faz uma chamada HTTP para o servidor de configuração com o nome do aplicativo e recupera novamente a configuração desse aplicativo.
application.yml
ouapplication.properties
Contém a configuração padrão do aplicativo - normalmente a configuração padrão, pois qualquer configuração recuperada durante o processo de inicialização substituirá a configuração definida aqui.
fonte
Esta resposta foi muito bem explicada no livro " Perguntas sobre entrevista de microsserviços, para desenvolvedores Java (Spring Boot, Spring Cloud, aplicativos nativos em nuvem) por Munish Chandel , versão 1.30, 25.03.2018.
application.yml
O arquivo application.yml / application.properties é específico para aplicativos Spring Boot. A menos que você altere o local das propriedades externas de um aplicativo, a inicialização por mola sempre carregará application.yml no seguinte local:
Você pode armazenar todas as propriedades externas para seu aplicativo neste arquivo. As propriedades comuns disponíveis em qualquer projeto Spring Boot podem ser encontradas em: https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Você pode personalizar essas propriedades como de acordo com as necessidades do seu aplicativo. O arquivo de amostra é mostrado abaixo:
bootstrap.yml
O bootstrap.yml, por outro lado, é específico da spring-cloud-config e é carregado antes do application.yml
O bootstrap.yml será necessário apenas se você estiver usando o Spring Cloud e sua configuração de microsserviço estiver armazenada em um servidor remoto do Spring Cloud Config.
Pontos importantes sobre o bootstrap.yml
Na inicialização, o Spring Cloud faz uma chamada HTTP (S) para o Spring Cloud Config Server com o nome do aplicativo e recupera novamente a configuração desse aplicativo.
application.yml contém a configuração padrão para o microsserviço e qualquer configuração recuperada (do servidor de configuração em nuvem) durante o processo de inicialização substituirá a configuração definida em application.yml
fonte
Apenas meus 2 centavos aqui ..
Bootstrap.yml ou Bootstrap.properties é usado para buscar a configuração do Spring Cloud Server.
Por exemplo, no arquivo My Bootstrap.properties, tenho o seguinte Config
Ao iniciar o aplicativo, ele tenta buscar a configuração do serviço conectando-se a http: // localhost: 8888 e consulta Calculation-service.properties presente no servidor Spring Cloud Config
Você pode validar o mesmo nos logs do Calcuation-Service ao iniciá-lo
INFO 10988 --- [ restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
fonte
Bem, concordo totalmente com as respostas já existentes neste ponto:
bootstrap.yml
é usado para salvar parâmetros que apontam onde está a configuração remota e o Contexto do aplicativo Bootstrap é criado com essas configurações remotas.Na verdade, ele também é capaz de armazenar propriedades normais da mesma forma que o que
application.yml
faz. Mas preste atenção nesta coisa complicada:bootstrap.yml
, elas terão uma precedência menor do que quase qualquer outra fonte de propriedades, incluindo application.yml. Como descrito aqui .Vamos deixar claro, existem dois tipos de propriedades relacionadas a
bootstrap.yml
:bootstrap.yml
para encontrar o detentor das propriedades (um sistema de arquivos, repositório git ou algo mais), e as propriedades que obtemos dessa maneira são de alta precedência, portanto elas não podem ser substituídas pela configuração local. Como descrito aqui .bootstrap.yml
. Como explicado anteriormente, eles terão menor precedência. Use-os para definir os padrões, talvez uma boa ideia.Portanto, as diferenças entre colocar uma propriedade na inicialização
application.yml
oubootstrap.yml
na primavera são:bootstrap.yml
.application.yml
maior prioridade.fonte
Bootstrap.yml é usado para buscar a configuração do servidor. Pode ser para um aplicativo em nuvem Spring ou para outros. Normalmente, parece com:
Quando iniciamos o aplicativo, ele tenta se conectar ao servidor especificado e ler a configuração com base no perfil de primavera mencionado na configuração de execução / depuração.
Se o servidor estiver inacessível, o aplicativo poderá não conseguir prosseguir. No entanto, se configurações correspondentes ao perfil estiverem presentes localmente, as configurações do servidor serão substituídas.
Boa abordagem:
Mantenha um perfil separado para local e execute o aplicativo usando perfis diferentes.
fonte
Outro uso do bootstrap.yml é carregar a configuração do kubernetes configmap e recursos secretos . O aplicativo deve importar a dependência spring-cloud-starter-kubernetes .
Assim como no Spring Cloud Config, isso deve ocorrer durante a frase de inicialização.
Dos documentos:
Portanto, as propriedades armazenadas no recurso configmap com meta.name default-name podem ser referenciadas da mesma forma que as propriedades em application.yml
E o mesmo processo se aplica aos segredos:
fonte
Bootstrap.yml é o primeiro arquivo carregado quando você inicia o aplicativo de inicialização da primavera e application.property é carregado quando o aplicativo é iniciado. Portanto, você deve manter as credenciais do servidor de configuração, etc., em bootstrap.yml, necessário durante o carregamento do aplicativo e, em application.properties, o URL do banco de dados, etc.
fonte