Spring Boot esternalizza la configurazione così lo stesso jar gira in ogni ambiente. Metti le impostazioni in application.yml (o .properties), le leggi nel tuo codice e cambi il comportamento per ambiente con i profili.
application.yml e @Value
Spring Boot esternalizza la configurazione così lo stesso jar gira in ogni ambiente. Metti le impostazioni in application.yml (o .properties), le leggi nel tuo codice e cambi il comportamento per ambiente con i profili.
@Component
public class SearchService {
// Inject a single property; :20 is the fallback if it is missing.
@Value("${app.page-size:20}")
private int pageSize;
}
Per qualsiasi cosa oltre uno o due valori, associa un oggetto tipizzato invece di disseminare @Value:
@Component
@ConfigurationProperties(prefix = "app") // binds app.* into these fields
public class AppProps {
private int pageSize;
private Map<String, Boolean> featureFlags;
// getters/setters — Boot relaxed-binds page-size -> pageSize
}
Questo ti dà type safety, autocompletamento nell'IDE e validazione (aggiungi @Validated + vincoli).
spring:
config:
activate:
on-profile: prod # only when 'prod' is active
server:
port: 80
File come application-dev.yml e application-prod.yml si sovrappongono a quello di base. Ne attivi uno con --spring.profiles.active=prod o con la variabile d'ambiente SPRING_PROFILES_ACTIVE. L'ordine di precedenza conta: gli argomenti da riga di comando e le variabili d'ambiente hanno la meglio sui file, così i segreti restano fuori dal jar.
L'intervistatore verifica che tu sappia rilasciare un unico artefatto attraverso dev/staging/prod senza ricompilare. Menzionare @ConfigurationProperties al posto di @Value sparsi, e le variabili d'ambiente che hanno la meglio sui file per i segreti, dimostra che hai fatto girare app Boot in produzione, non solo in locale.
Una raccolta di domande di colloquio IT con risposte dettagliate — da Junior a Senior.
Dona