Spring Boot externaliserar konfiguration så att samma jar körs i varje miljö. Du lägger inställningar i application.yml (eller .properties), läser in dem i din kod, och växlar beteende per miljö med profiler.
application.yml och @Value
Spring Boot externaliserar konfiguration så att samma jar körs i varje miljö. Du lägger inställningar i application.yml (eller .properties), läser in dem i din kod, och växlar beteende per miljö med profiler.
@Component
public class SearchService {
// Inject a single property; :20 is the fallback if it is missing.
@Value("${app.page-size:20}")
private int pageSize;
}
För allt utöver ett eller två värden, bind ett typat objekt istället för att sprida ut @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
}
Detta ger dig typsäkerhet, autokomplettering i IDE:n och validering (lägg till @Validated + constraints).
spring:
config:
activate:
on-profile: prod # only when 'prod' is active
server:
port: 80
Filer som application-dev.yml och application-prod.yml läggs ovanpå basen. Aktivera en med --spring.profiles.active=prod eller miljövariabeln SPRING_PROFILES_ACTIVE. Prioritetsordningen spelar roll: kommandoradsargument och miljövariabler åsidosätter filer, så hemligheter hålls utanför jar-filen.
Intervjuaren kontrollerar att du kan leverera en och samma artefakt över dev/staging/prod utan att bygga om. Att nämna @ConfigurationProperties framför utspridda @Value, och att miljövariabler åsidosätter filer för hemligheter, visar att du har kört Boot-appar i produktion, inte bara lokalt.
Ett bibliotek med IT-intervjufrågor och detaljerade svar — från Junior till Senior.
Donera