Devo postfix application.yml?

0

Struttura del mio progetto (Spring / maven):

src / main / resources / application.yml
src / test / resources / application.yml

Funziona bene (quando lancio test, prende il test application.yml).

Ma spesso, vedo post in cui application.yml è postfix per ottenere il profilo attivo: vale a dire application-test.yml per il profilo di test.

Qual è la migliore pratica qui? Qual è il punto di postfixing del nome? Quando è esattamente utile?

    
posta Tyvain 06.11.2018 - 04:46
fonte

1 risposta

1

In qualche modo, l'applicazione deve trovare il file di configurazione. Ci sono due approcci:

  • L'app sa in quale contesto viene eseguito e trova il file di configurazione corretto per quel contesto. Solitamente questo significa semplicemente "cercare un nome specifico nella directory di lavoro corrente".
  • Fornisci esplicitamente un file di configurazione all'app.

Con il primo approccio - l'app cerca un file di configurazione con un nome specifico - può esserci un solo file di configurazione per directory. Questo ha un numero di potenziali problemi:

  • Se desideri una configurazione diversa, devi modificare il contesto pertinente, ad es. avvia da una diversa directory di lavoro.
  • Un utente non realizza necessariamente quale file di configurazione viene utilizzato. Questo può ad es. fare affidamento su valori predefiniti errati.
  • Se uno sviluppatore deve apportare modifiche locali alla configurazione, deve modificare un file con un nome specifico. Questo file verrà contrassegnato come sporco dal sistema di controllo della versione, tuttavia tali modifiche locali non dovrebbero mai essere eseguite.

Per questi motivi, credo che fornire la configurazione in modo esplicito sia migliore. Lo svantaggio è che un file di configurazione deve essere fornito per l'esecuzione dell'app, il che rende l'installazione un po 'più difficile.

Quindi, se disponiamo di più file di configurazione, come possiamo stabilire quale è? Uno schema di denominazione come application-$CONTEXT.yml sembra perfettamente sensato. Se devo apportare modifiche locali, copio semplicemente la configurazione in un nuovo nome file e faccio le mie modifiche lì.

Si noti che, in senso stretto, al file system non interessa se si memorizza il file di configurazione come project/$CONTEXT/application.yml o project/application-$CONTEXT.yml . C'è solo una vera differenza se il file di configurazione di default è, ad es. scelto dalla directory di lavoro corrente dell'appplicazione.

    
risposta data 07.11.2018 - 21:55
fonte

Leggi altre domande sui tag