Spring Boot externalizează configurarea, astfel încât același jar să ruleze în fiecare mediu. Pui setările în application.yml (sau .properties), le citești în cod și schimbi comportamentul per mediu cu profiluri.
application.yml și @Value
Spring Boot externalizează configurarea, astfel încât același jar să ruleze în fiecare mediu. Pui setările în application.yml (sau .properties), le citești în cod și schimbi comportamentul per mediu cu profiluri.
@Component
public class SearchService {
// Injectează o singură proprietate; :20 este valoarea de rezervă dacă lipsește.
@Value("${app.page-size:20}")
private int pageSize;
}
Pentru orice depășește una-două valori, leagă un obiect tipizat în loc să împrăștii @Value:
@Component
@ConfigurationProperties(prefix = "app") // leagă app.* în aceste câmpuri
public class AppProps {
private int pageSize;
private Map<String, Boolean> featureFlags;
// getters/setters — Boot face relaxed-binding page-size -> pageSize
}
Asta îți oferă siguranță de tip, auto-complete în IDE și validare (adaugă @Validated + constrângeri).
spring:
config:
activate:
on-profile: prod # doar când 'prod' este activ
server:
port: 80
Fișiere precum application-dev.yml și application-prod.yml se suprapun peste cel de bază. Activezi unul cu --spring.profiles.active=prod sau cu variabila de mediu SPRING_PROFILES_ACTIVE. Ordinea de precedență contează: argumentele din linia de comandă și variabilele de mediu au prioritate față de fișiere, așa că secretele rămân în afara jar-ului.
Intervievatorul verifică dacă poți livra un singur artefact în dev/staging/prod fără reconstruire. Menționarea lui @ConfigurationProperties în locul unui @Value împrăștiat și a variabilelor de mediu care au prioritate față de fișiere pentru secrete arată că ai rulat aplicații Boot în producție, nu doar local.
O bibliotecă de întrebări de interviu IT cu răspunsuri detaliate — de la Junior la Senior.
Donează