/ / Manter vários arquivos de propriedades no aplicativo Spring Boot - java, spring-boot, properties

Manter vários arquivos de propriedades no aplicativo Spring Boot - java, spring-boot, properties

Eu tenho um aplicativo de inicialização de mola e tem vários arquivos de propriedade, um para cada ambiente local, dev, teste, desempenho, produção.

Recentemente tivemos um incidente em que alguém esqueceu de colocar uma nova entrada de propriedade no arquivo de propriedades de produção e o sistema ficou inoperante por horas em produção.

Minha pergunta é, existem práticas melhores sobre como manter as propriedades em vários arquivos de propriedades?

Estou agora pensando em um utilitário, talvez um teste de unidade que verifica cada chave existe em cada arquivo de propriedade e falharia a compilação se isso não existe.

Eu fiz algumas pesquisas, mas não consegui encontrarmuito sobre isso. Eu entendo Tantos termos de questionamento e que estou meio que buscando opinião aqui. Estou mais interessado em conhecer as melhores práticas na manutenção de arquivos de propriedades.

Respostas:

3 para resposta № 1

Você deve usar diferentes arquivos de propriedades para diferentes ambientes.

application-qa.properties para ambiente de controle de qualidade

application-prod.properties para ambiente de produção

application-local.properties para o ambiente local

E, em seguida, use vários scripts para iniciar o aplicativo para diferentes ambientes, como cada script de shell conteria

mvn spring-boot: run -Drun.profiles = qa

mvn spring-boot: run -Drun.profiles = prod

mvn spring-boot: run -Drun.profiles = local

Por exemplo application-local.properties arquivo é:

spring.profiles.active = local

spring.data.mongodb.host = localhost

spring.data.mongodb.port = 27017

spring.data.mongodb.database = my_db_name

spring.data.mongodb.username = some_user_name

spring.data.mongodb.password = some_password

spring.rabbitmq.host = localhost

spring.rabbitmq.username = convidado

spring.rabbitmq.password = convidado

spring.rabbitmq.port = 5672

rabbitmq.publish = true


1 para resposta № 2

Sim, essa é a prática padrão seguida paraseparar as propriedades dependentes do ambiente e tê-las injetadas usando spring.profile.active, mas o cenário descrito parece ser mais um erro humano e pode ocorrer com qualquer utilitário, pode-se testar para verificar as propriedades, mas ele introduz um problema de manutenibilidade. Eu prefiro gerenciar propriedades relacionadas à produção usando a configuração de nuvem de mola (Aqui) porque as propriedades de produção podem conter credenciais de db e chaves secretas que podem vazar.


1 para resposta № 3

Você pode usar um arquivo de propriedades padrão. Se não houver nenhuma propriedade em um determinado arquivo específico de env, ele procurará nesse arquivo de propriedades.

sempre que possível, ao resolver a propriedade na primavera, tente fornecer o valor padrão. Por exemplo. @Value ("$ {mongodb.url: 127.0.0.1}")