Spring Boot eksternaliserer konfigurasjon så den samme jar-en kjører i hvert miljø. Du legger innstillinger i application.yml (eller .properties), leser dem inn i koden din, og bytter atferd per miljø med profiler.
application.yml og @Value
Spring Boot eksternaliserer konfigurasjon så den samme jar-en kjører i hvert miljø. Du legger innstillinger i application.yml (eller .properties), leser dem inn i koden din, og bytter atferd per miljø med profiler.
@Component
public class SearchService {
// Injiser én enkelt property; :20 er fallback hvis den mangler.
@Value("${app.page-size:20}")
private int pageSize;
}
For alt utover én eller to verdier, bind et typet objekt i stedet for å strø @Value utover:
@Component
@ConfigurationProperties(prefix = "app") // binder app.* inn i disse feltene
public class AppProps {
private int pageSize;
private Map<String, Boolean> featureFlags;
// getters/setters — Boot relaxed-binder page-size -> pageSize
}
Dette gir deg typesikkerhet, autofullføring i IDE-en og validering (legg til @Validated + constraints).
spring:
config:
activate:
on-profile: prod # bare når 'prod' er aktiv
server:
port: 80
Filer som application-dev.yml og application-prod.yml legger seg oppå grunnfilen. Aktiver en med --spring.profiles.active=prod eller miljøvariabelen SPRING_PROFILES_ACTIVE. Rekkefølgen for presedens er viktig: kommandolinjeargumenter og miljøvariabler overstyrer filer, så hemmeligheter holdes utenfor jar-en.
Intervjueren sjekker at du kan levere ett artefakt på tvers av dev/staging/prod uten å bygge på nytt. Å nevne @ConfigurationProperties fremfor spredte @Value, og at miljøvariabler overstyrer filer for hemmeligheter, viser at du har kjørt Boot-apper i produksjon, ikke bare lokalt.
Et bibliotek av IT-intervjuspørsmål med detaljerte svar — fra Junior til Senior.
Doner