Eksternalisering av applikasjonsegenskaper
Konfigurer applikasjonen ved hjelp av filene `application.properties` og `application.yml`, og administrer profiler.
Eksternalisering av applikasjonsegenskaper er en gratis leksjon i Komplett guide til Spring Boot 4 på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Komplett guide til Spring Boot 4, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Komplett guide til Spring Boot 4 inneholder totalt 4 leksjoner.
Hold konfigurasjonen fleksibel
Se for deg at du bygger en app for ulike miljøer, som utvikling, testing og produksjon. Hvert miljø kan trenge egne databaselegitimasjoner, API-nøkler eller serverporter.
Det er dårlig praksis å skrive disse verdiene direkte inn i koden. Det gjør appen lite fleksibel og vanskelig å administrere.
Eksternalisering av konfigurasjon betyr at du lagrer disse verdiene som kan endres, utenfor hovedkoden til applikasjonen. Da kan du endre dem uten å bygge appen på nytt.
application.properties
Spring Boot gjør ekstern konfigurasjon enkelt. Den vanligste måten er å bruke filen application.properties, som ligger i mappen src/main/resources.
Filen bruker et enkelt format med nøkkel-verdi-par, der hver egenskap står på en ny linje:
server.port=8080spring.datasource.url=jdbc:h2:mem:testdbmy.custom.greeting=Hello CoddyKit!
Disse verdiene kan deretter injiseres i Spring-komponentene dine.
Injisering med @Value
For å bruke en ekstern egenskap i Java-koden din tilbyr Spring annotasjonen @Value.
Du kan bruke @Value på felt, konstruktørparametere eller metodeparametere. Den leser verdien som er knyttet til en bestemt nøkkel, fra egenskapsfilene dine.
Syntaksen er @Value("${property.key}"). Hvis egenskapen ikke finnes, kan du angi en standardverdi, for eksempel @Value("${property.key:Default Value}").
@Value i praksis
La oss se hvordan @Value fungerer. Først oppretter vi en application.properties-fil.
src/main/resources/application.properties:
app.message=Welcome to CoddyKit!Kjør nå denne Spring Boot-applikasjonen. Den vil injisere egenskapen og skrive den ut ved oppstart.
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Component;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@Component
class MessagePrinter implements CommandLineRunner {
@Value("${app.message}")
private String message;
@Override
public void run(String... args) throws Exception {
System.out.println("Application Message: " + message);
}
}Strukturerte YAML-filer
Et annet populært format for ekstern konfigurasjon er YAML (YAML Ain't Markup Language), vanligvis i en application.yml-fil.
YAML gir en mer leservennlig og hierarkisk struktur enn de flate nøkkel-verdi-parene i .properties-filer. Innrykk brukes til å definere nøstede egenskaper.
- Lesbarhet: Det er enklere å forstå komplekse konfigurasjoner.
- Hierarki: Beslektede egenskaper grupperes på en naturlig måte.
- Mindre gjentakelse: Vanlige prefikser trenger ikke å gjentas.
YAML for tydelighet
Slik vil den samme meldingsegenskapen fra tidligere se ut i application.yml:
src/main/resources/application.yml:
app:
message: Welcome to CoddyKit! (YAML)Java-koden forblir nøyaktig den samme, fordi Spring Boot støtter begge formatene automatisk. Kjør dette for å se det i praksis.
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Component;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@Component
class MessagePrinter implements CommandLineRunner {
@Value("${app.message}")
private String message;
@Override
public void run(String... args) throws Exception {
System.out.println("Application Message: " + message);
}
}Hvem vinner? Prioritet
Hva skjer hvis prosjektet ditt inneholder både application.properties og application.yml? Hvilken fil har prioritet?
Spring Boot har en bestemt rekkefølge for innlasting av konfigurasjonskilder. Generelt har egenskaper som er definert i application.properties, høyere prioritet enn de i application.yml når begge finnes og definerer den samme nøkkelen.
Dette lar deg overstyre standardverdier med mer spesifikke verdier ved behov, uten å endre de opprinnelige filene.
Tilpasning med profiler
Spring-profiler gjør det mulig å skille ut deler av applikasjonskonfigurasjonen og gjøre dem tilgjengelige bare i bestemte miljøer.
Du kan for eksempel ha ulike databaseinnstillinger for miljøene development, test og production. I stedet for å endre konfigurasjonsfiler manuelt kan du definere profiler.
Når en bestemt profil er aktiv, lastes bare beans og konfigurasjon som er knyttet til denne profilen, inn.
Tilpass for ulike miljøer
For å definere profilspesifikke egenskaper oppretter du flere konfigurasjonsfiler som følger en bestemt navnekonvensjon:
application-{profile}.propertiesapplication-{profile}.yml
For eksempel:
application-dev.propertiesfor innstillinger til utvikling.application-prod.ymlfor innstillinger til produksjon.
Disse filene inneholder egenskaper som bare gjelder når den tilhørende profilen er aktiv.
Bytte profil
Du kan aktivere en Spring-profil på flere måter:
- JVM-systemegenskap: Send
-Dspring.profiles.active=devnår du kjører appen. - Miljøvariabel: Angi
SPRING_PROFILES_ACTIVE=prod. - I
application.properties/.yml: Angispring.profiles.active=test.
Det er vanlig å bruke JVM-argumenter eller miljøvariabler ved produksjonsutrulling, slik at hovedfilen application.properties holdes ryddig.
Hurtigsjekk: Konfigurasjon
Du har en application.properties-fil med app.environment=development. Du har også en application-prod.properties-fil med app.environment=production.
Hvordan aktiverer du prod-profilen for å sikre at app.environment får verdien production?
Oppsummering: Bli konfigurasjonsmester
Godt jobbet! Du har lært hvordan du eksternaliserer applikasjonsegenskaper i Spring Boot, slik at applikasjonene blir mer fleksible og enklere å administrere i ulike miljøer.
- Vi utforsket
application.propertiesfor enkle nøkkel-verdi-par. - Vi så på
application.ymlfor strukturert, hierarkisk konfigurasjon. - Du lærte å injisere egenskaper i koden ved hjelp av annotasjonen
@Value. - Til slutt gikk vi gjennom Spring-profiler for å tilpasse konfigurasjoner til bestemte miljøer og hvordan de aktiveres.
Disse kunnskapene er avgjørende for å bygge robuste og tilpasningsdyktige Spring Boot-applikasjoner!
Lær deg Java med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 21
- Leksjoner
- 84
Ofte stilte spørsmål
Er leksjonen «Eksternalisering av applikasjonsegenskaper» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Komplett guide til Spring Boot 4, inkludert «Eksternalisering av applikasjonsegenskaper», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Komplett guide til Spring Boot 4 inneholder totalt 4 leksjoner.
Hva lærer jeg i «Eksternalisering av applikasjonsegenskaper»?
Konfigurer applikasjonen ved hjelp av filene `application.properties` og `application.yml`, og administrer profiler. Du øver på Komplett guide til Spring Boot 4 med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Komplett guide til Spring Boot 4?
Ingen tidligere erfaring er nødvendig. Komplett guide til Spring Boot 4 på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Eksternalisering av applikasjonsegenskaper»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Komplett guide til Spring Boot 4-leksjonen?
Ja. Alle Komplett guide til Spring Boot 4-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Forstå Spring IoC-containeren
- Dependency injection i praksis
- Eksternalisering av applikasjonsegenskaper
- Bean-scope og livssyklushåndtering