Spring YAML-konfiguration
1. Oversigt
En af måderne til konfiguration af Spring-applikationer er at bruge YAML-konfigurationsfiler.
I denne hurtige artikel konfigurerer vi forskellige profiler til en simpel Spring Boot-applikation ved hjælp af YAML.
2. Spring YAML-fil
Fjederprofiler hjælper med at aktivere forårsprogrammer til at definere forskellige egenskaber til forskellige miljøer.
Følgende er en simpel YAML-fil, der indeholder to profiler. De tre bindestreger, der adskiller de to profiler, indikerer starten på et nyt dokument, så alle profilerne kan beskrives i den samme YAML-fil.
Den relative sti til ansøgning.yml filen er /myApplication/src/main/resources/application.yml.
Spring-applikationen tager den første profil som standardprofil, medmindre andet er angivet i Spring-applikationen.
spring: config: aktivere: on-profile: test navn: test-YAML miljø: test aktiveret: falske servere: - www.abc.test.com - www.xyz.test.com --- spring: config: aktivere: til -profil: prod navn: prod-YAML miljø: produktion aktiveret: ægte servere: - www.abc.com - www.xyz.com
3. Binding af YAML til en Config-klasse
For at indlæse et sæt relaterede egenskaber fra en egenskabsfil opretter vi en bønneklasse:
@Configuration @EnableConfigurationProperties @ConfigurationProperties offentlig klasse YAMLConfig {privat strengnavn; private String miljø; privat boolsk aktiveret private List-servere = ny ArrayList (); // standard getters og setter}
Annotationen, der bruges her, er:
- @Konfigurationmarkerer klassen som en kilde til bønnedefinitioner
- @ConfigurationProperties binder og validerer de eksterne konfigurationer til en konfigurationsklasse
- @EnableConfigurationProperties denne kommentar bruges til at aktivere @ConfigurationProperties bemærkede bønner i foråret ansøgning
4. Adgang til YAML-egenskaberne
For at få adgang til YAML-egenskaberne opretter vi et objekt af YAMLConfig klasse og få adgang til egenskaberne ved hjælp af det pågældende objekt.
Lad os indstille filen i egenskabsfilen spring.active.profiles miljøvariabel til prod. Hvis vi ikke definerer spring.profiles.active, det vil som standard være den første profilegenskab, der er defineret i YAML-filen.
Den relative sti for egenskabsfilen er /myApplication/src/main/resources/application.properties.
spring.profiles.active = prod
I dette eksempel viser vi egenskaberne ved hjælp af CommandLineRunner.
@SpringBootApplication offentlig klasse MyApplication implementerer CommandLineRunner {@Autowired private YAMLConfig myConfig; public static void main (String [] args) {SpringApplication app = new SpringApplication (MyApplication.class); app.run (); } offentlig ugyldig kørsel (String ... args) kaster Undtagelse {System.out.println ("ved hjælp af miljø:" + myConfig.getEnvironment ()); System.out.println ("navn:" + myConfig.getName ()); System.out.println ("aktiveret:" + myConfig.isEnabled ()); System.out.println ("servere:" + myConfig.getServers ()); }}
Outputtet på kommandolinjen:
ved hjælp af miljø: produktionsnavn: prod-YAML aktiveret: ægte servere: [www.abc.com, www.xyz.com]
5. YAML ejendomsoverskridelse
I Spring Boot kan YAML-filer tilsidesættes af andre YAML-egenskabsfiler.
Før version 2.4.0 blev YAML-egenskaber tilsidesat af egenskabsfiler på følgende placeringer i rækkefølge med højeste prioritet først:
- Profiles egenskaber placeret uden for den pakkede krukke
- Profiles egenskaber pakket inde i den pakkede krukke
- Anvendelsesegenskaber placeret uden for den emballerede krukke
- Anvendelsesegenskaber pakket inde i den pakkede krukke
Fra og med Spring Boot 2.4 tilsidesætter ekstern fil altid pakkede filer, uanset om den er profilspecifik eller ej.
6. Konklusion
I denne hurtige artikel har vi set, hvordan man konfigurerer egenskaber i Spring Boot-applikationer ved hjælp af YAML. Vi har også set ejendomsoverordnede regler efterfulgt af Spring Boot til YAML-filer.
Koden til denne artikel er tilgængelig på GitHub.