Spring Boot eksternaliserer konfiguration, så den samme jar kører i alle miljøer. Du lægger indstillinger i application.yml (eller .properties), læser dem ind i din kode og ændrer adfærd per miljø med profiler.
application.yml og @Value
Spring Boot eksternaliserer konfiguration, så den samme jar kører i alle miljøer. Du lægger indstillinger i application.yml (eller .properties), læser dem ind i din kode og ændrer adfærd 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;
}
For alt ud over en eller to værdier bør du binde et typet objekt i stedet for at sprede @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
}
Dette giver dig typesikkerhed, IDE-autofuldførelse og validering (tilføj @Validated + constraints).
spring:
config:
activate:
on-profile: prod # only when 'prod' is active
server:
port: 80
Filer som application-dev.yml og application-prod.yml lægges oven på basen. Aktivér en med --spring.profiles.active=prod eller miljøvariablen SPRING_PROFILES_ACTIVE. Rækkefølgen af præcedens betyder noget: kommandolinjeargumenter og miljøvariabler overstyrer filer, så hemmeligheder holdes ude af jaren.
Intervieweren tjekker, at du kan levere ét artefakt på tværs af dev/staging/prod uden at genbygge. At nævne @ConfigurationProperties frem for spredt @Value, og at miljøvariabler overstyrer filer for hemmeligheder, viser, at du har kørt Boot-apps i produktion, ikke blot lokalt.
Et bibliotek af IT-interviewspørgsmål med detaljerede svar — fra Junior til Senior.
Donér