Spring Boot externalizuje konfiguraci, takže stejný jar běží v každém prostředí. Nastavení dáte do application.yml (nebo .properties), načtete je do kódu a chování přepínáte podle prostředí pomocí profilů.
application.yml a @Value
Spring Boot externalizuje konfiguraci, takže stejný jar běží v každém prostředí. Nastavení dáte do application.yml (nebo .properties), načtete je do kódu a chování přepínáte podle prostředí pomocí profilů.
@Component
public class SearchService {
// Injektuj jedinou property; :20 je záložní hodnota, pokud chybí.
@Value("${app.page-size:20}")
private int pageSize;
}
Pro cokoli za hranicí jedné či dvou hodnot navažte typovaný objekt místo rozsévání @Value:
@Component
@ConfigurationProperties(prefix = "app") // naváže app.* do těchto polí
public class AppProps {
private int pageSize;
private Map<String, Boolean> featureFlags;
// gettery/settery — Boot relaxed-binduje page-size -> pageSize
}
To vám dá typovou bezpečnost, IDE auto-complete a validaci (přidejte @Validated + constraints).
spring:
config:
activate:
on-profile: prod # jen když je aktivní 'prod'
server:
port: 80
Soubory jako application-dev.yml a application-prod.yml se vrství na základní. Aktivujte jeden pomocí --spring.profiles.active=prod nebo proměnné prostředí SPRING_PROFILES_ACTIVE. Na pořadí priority záleží: argumenty příkazové řádky a proměnné prostředí přebijí soubory, takže tajemství zůstávají mimo jar.
Tazatel ověřuje, že umíte dodat jeden artefakt napříč dev/staging/prod bez rebuildu. Zmínka o @ConfigurationProperties místo roztroušených @Value a o proměnných prostředí přebíjejících soubory pro tajemství ukazuje, že jste Boot aplikace provozovali v produkci, ne jen lokálně.
Knihovna IT otázek k pohovoru s podrobnými odpověďmi — od Junior po Senior.
Přispět