/ / Mantiene più file di proprietà nell'applicazione Spring Boot: java, spring-boot, properties

Mantieni più file di proprietà nell'applicazione Spring Boot: java, spring-boot, properties

Ho un'applicazione di avvio a molla e ha più file di proprietà, uno per ogni ambiente locale, dev, test, prestazioni, produzione.

Recentemente abbiamo avuto un incidente in cui qualcuno si è dimenticato di inserire una nuova proprietà nel file delle proprietà di produzione e il sistema era inattivo per ore di produzione.

La mia domanda è, ci sono delle migliori pratiche su come mantenere le proprietà tra più file di proprietà?

In questo momento sto pensando a un'utilità, forse un test unitario che verifica ogni chiave esiste in ogni file di proprietà e fallirebbe la build se non esiste.

Ho fatto alcune ricerche ma non ho potuto trovare davveromolto su di esso. Comprendo i termini della domanda SO e che sto cercando un'opinione qui. Sto più cercando di conoscere le migliori pratiche sul mantenimento dei file di proprietà.

risposte:

3 per risposta № 1

È necessario utilizzare file di proprietà differenti per diversi ambienti.like

application-qa.properties per l'ambiente QA

application-prod.properties per ambiente di produzione

application-local.properties per l'ambiente locale

E quindi utilizzare più script per avviare l'applicazione per ambienti diversi, come ogni script della shell conterrebbe

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

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

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

Per esempio application-local.properties il file è:

spring.profiles.active = locale

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 = ospite

spring.rabbitmq.password = ospite

spring.rabbitmq.port = 5672

rabbitmq.publish = true


1 per risposta № 2

Sì, questa è la pratica standard seguita aseparare le proprietà dipendenti dall'ambiente e farle iniettare usando spring.profile.active, ma lo scenario che hai descritto sembra più un errore umano e può verificarsi con qualsiasi utility, si può avere un test per verificare le proprietà ma introduce un problema di manutenibilità. Preferisco gestire le proprietà relative alla produzione utilizzando la configurazione della nuvola di primavera (Qui) perché le proprietà di produzione possono contenere credenziali db e chiavi segrete che potrebbero essere trapelate.


1 per risposta № 3

È possibile utilizzare un file di proprietà predefinito. Se non ci sono proprietà in un particolare file env specifico, cercherà in questo file delle proprietà.

Laddove possibile, mentre risolvi la proprietà in primavera, prova a fornire il valore predefinito. Per es. @Value ( "$ {mongodb.url: 127.0.0.1}")