Spring Boot eksternalizira konfiguracijo, tako da isti jar teče v vsakem okolju. Nastavitve daš v application.yml (ali .properties), jih prebereš v svojo kodo in preklopiš vedenje po okoljih s profili.
application.yml in @Value
Spring Boot eksternalizira konfiguracijo, tako da isti jar teče v vsakem okolju. Nastavitve daš v application.yml (ali .properties), jih prebereš v svojo kodo in preklopiš vedenje po okoljih s 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;
}
Za karkoli več kot eno ali dve vrednosti poveži tipiziran objekt, namesto da razpršiš @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
}
To ti da tipsko varnost, samodejno dopolnjevanje v IDE in validacijo (dodaj @Validated + omejitve).
spring:
config:
activate:
on-profile: prod # only when 'prod' is active
server:
port: 80
Datoteke, kot sta application-dev.yml in application-prod.yml, se naložijo nad osnovno. Enega aktiviraš z --spring.profiles.active=prod ali okoljsko spremenljivko SPRING_PROFILES_ACTIVE. Vrstni red prednosti je pomemben: argumenti ukazne vrstice in okoljske spremenljivke prevladajo nad datotekami, tako da skrivnosti ostanejo zunaj jar-a.
Izpraševalec preverja, ali znaš isti artefakt dostaviti čez dev/staging/prod brez ponovnega gradnje. Omenjanje @ConfigurationProperties namesto razpršenega @Value in okoljskih spremenljivk, ki prevladajo nad datotekami za skrivnosti, kaže, da si Boot aplikacije poganjal v produkciji, ne le lokalno.
Knjižnica IT vprašanj za razgovore s podrobnimi odgovori — od začetnika do izkušenega.
Doniraj