Spring Boot eksternalizira konfiguraciju pa isti jar radi u svakom okruženju. Postavke stavljate u application.yml (ili .properties), čitate ih u svoj kod i mijenjate ponašanje po okruženju pomoću profila.
application.yml i @Value
Spring Boot eksternalizira konfiguraciju pa isti jar radi u svakom okruženju. Postavke stavljate u application.yml (ili .properties), čitate ih u svoj kod i mijenjate ponašanje po okruženju pomoću profila.
@Component
public class SearchService {
// Injektiraj jedno svojstvo; :20 je fallback ako nedostaje.
@Value("${app.page-size:20}")
private int pageSize;
}
Za bilo što više od jedne ili dvije vrijednosti, povežite tipizirani objekt umjesto raspršivanja @Value:
@Component
@ConfigurationProperties(prefix = "app") // veže app.* u ova polja
public class AppProps {
private int pageSize;
private Map<String, Boolean> featureFlags;
// getteri/setteri — Boot relaxed-bindanjem veže page-size -> pageSize
}
Ovo vam daje tipsku sigurnost, IDE auto-complete i validaciju (dodajte @Validated + ograničenja).
spring:
config:
activate:
on-profile: prod # samo kada je 'prod' aktivan
server:
port: 80
Datoteke poput application-dev.yml i application-prod.yml naslojavaju se na osnovnu. Aktivirajte jedan s --spring.profiles.active=prod ili env varijablom SPRING_PROFILES_ACTIVE. Redoslijed prioriteta je bitan: argumenti iz naredbenog retka i varijable okruženja nadjačavaju datoteke, pa tajne ostaju izvan jar-a.
Ispitivač provjerava možete li isporučiti jedan artefakt kroz dev/staging/prod bez ponovnog buildanja. Spominjanje @ConfigurationProperties umjesto raspršenog @Value, te env varijabli koje nadjačavaju datoteke za tajne, pokazuje da ste pokretali Boot aplikacije u produkciji, a ne samo lokalno.
Knjižnica IT pitanja za razgovore za posao s detaljnim odgovorima — od Juniora do Seniora.
Doniraj