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 № 1Você 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}")